More C++ Idioms/Small Object Optimization

As seen in boost::function to implement type erasure but faster than the heap allocated holder object