Reimplement and simplify design using type_index_facade class
Moved some of the classes from boost::typeind::detail namespace to boost::typeind namespace