Improve the decay_ref functionality for arrays, and add unit tests for this too
Re-namespaced metafunctions.
Further namespacing changes; also update the underlying type of empty_type to be itself