Various refinements and improvements to existing systems.

- Split up all declarations from non-singleton definitions
- Tested and improved const-correctness across constructors and
destructors
- Improved encapsulation by hiding private members, moving them out of
headers
- Tested ManMemPointer and its ancestors
- Added template meta-programming to enforce smart pointer inheritance
- Added Global.h to store global macros
- Tested and further debugged Log.h and its family
- Various compile-time optimizations
- Added exception handling for a few aberrant use cases in Log,
ManMemPointer, Functor, Dator, NEAssert, and main
Deleted BaseDator.cpp