Add CopyStorageClasses template and allow access to ConstOf and others.

Please see https://github.com/D-Programming-Language/phobos/pull/2562 for context.

This change adds a CopyStorageClasses template based on the existing ModifyTypePreservingSTC template. It also makes MutableOf, InoutOf, etc. public so that they can be used in user code.
Well this one is confusing. As a user I would have expected `static assert(is(MutableOf!(immutable int) == int));`.