Updated more functionality to use Apply mechanism
Added unit test for placeholder ArrayTransform and ArrayZip
Updated function signatures mechanism to use a level of indirection to make function pointer handling cleaner; this forced the use of a boxing mechanism for references as the explicit specialsations for function pointers was hiding a problem with all reference input/codomain types. Changed behaviour of the library to return the full type, not the 'decayed' type in the sense that T const& used to be T but is now retained as T const&