Set up Assert functionality as a (nearly) stand-alone piece. The duplication of logic code was considered worth it as depending on metaprogramming.h would render this unusable within that file.