Add `all` to tmp.h and implement boost.apply_visit wrapper for lambdas.

Since `boost::apply_visitor` requires that the visitor object provides a
`result_type` member (probably to avoid all the code I've written
today), this wrapper is necessary when you want to visit a
`boost.variant` using polymorphic lambdas. There's a chance I have
overboilerplated this (IOW: that it is possible to do this in an easier
and more straightforward way), but this works and I am happy. Note: it
*doesn't*, however, work for lambdas returning `void`; please return
`reaver::unit` or similar type from those, so `std::common_type` doesn't
get crazy.