This fixes a flaw in the metafunction class/metafunction algebra
that long has been a major source of other inconsistencies throughout
the library.

The apply metafunction now automatically invokes lambda
on its first argument. For example, the following is well-formed now:

typedef apply< plus<_1,_1>, int_<2> >::type four;

apply_wrapn auxiliary metafunctions are available for rare cases
when it's crucial to eliminate the small overhead associated with lambda
expressions while still avoiding various compiler bugs known to
cause problems with
the obvious f::templateapply<...>::type syntax.

The lambda implementation for broken compilers has been
reworked to emulate the semantics of the full-fledged version
as closely as possible; consequently, any code out there that
was taking advantage of the semantic quirks of less complete
emulation in the previous release may stop working with the new
one.