Add make_apply to create a functor that can be used with the algorithm library

Add parameter pack representation type and meta functions to meta
programming template

Fix core::variant to use void* and static cast's internally. This is
probably won't give people heart attacks when they see the casting code.

Add a constexpr *capable* mem_fn implementation. If a compiler supports
it, it can be used at compile time.

Expanded the use of invoke to follow the mem_fn call, so
reference_wrapper, and smart pointers are now usable.

Deprecated invoke(unpack_t, F, Args...)

Fix aligned_storage_t alias to have a default alignment value (which it
is supposed to have!)

Added an aligned_union implementation and aligned_union_t alias. This
was implemented so that previous GCC versions can have access to it.

Use of core::typelist_index and core::typelist_count will be deprecated
before the release of 1.2