Add C++14 style result_of type trait (allows SFINAE)

Add class_of type trait. It can extract the class of a member function
pointer.

Add is_specialization_of type trait that allows checking to see if a
given type is a template class. (For instance,
std::is_specialization_of<T, std::tuple>::value)

Add invoke_of and invokable type traits. (This will make implementing
'invoke' easier, as well as performing conditional unpacking if
desired).
Add functional component, based off of the proposed 'invoke' function.

This 'invoke' function will go a step further and (in the case of tuple
and pair) provide a way to quickly unpack a type into an invoke
expression. This 'unpacking' may be extended in other ways, however it
is primarily for tuples.
Add 'unpack'-able invoke, which unpacks a tuple with perfect forwarding.

Clean up the type traits a bit.
Fix a typo in functional for an invoke signature.

The function signature for the unpack invoke may change. I don't know
how I feel about it going 'unpack', 'call', 'args'. Ideally it should be
'call', 'unpack', 'args'. This would then let a invoke of this invoke
take place, and I like this flexibility.