Feature/type system

Added a Singleton class, refactored some internal methods to accommodate Singletons, abstracted some tests for reuse, and added tests for Module and Singleton