Drop std::function from try_catch() and friends, deficient edition
When used as an argument to try_catch() and similar functions,
std::function may potentially introduce runtime overhead on the
exception-free path, possibly even allocate (and thus throw
std::bad_alloc).
This can be prevented by rewriting try_catch() as a generic wrapper with
perfect forwarding.
This has been coded deficiently on purpose, refusing to leverage any and
all kinds of bloat reduction opportunities. For the rationale, please
consult code review participants as I have none to give.
"I'm only following orders."
- A nameless soldier
Change-Id: I00adf24213a2e6bf8d148db8375a14200c64ff4f