Boost.Reflection initial restructuring for generic usage.
Note that the Boost.Preprocess macros have not yet been added which will allow multiple arguments for constructors/functions.