airty -> arity typo correction
Added macros to control type and function visibility
Added macro METAPROGRAMMING_ONLY that helps to mark metafunctions as non-constructible so providing compile-time warning of metafunction mis-use. Also allows for safer use of the hidden visibility attribute