Added `protect` to turn off placeholder substitution within `apply`

Signed-off-by: K-ballo <k@fusionfenix.com>
Added support for non-template metafunctions

Signed-off-by: K-ballo <k@fusionfenix.com>