Templates and File Renaming

Renamed some header files to ".hpp" to be extra verbose. Updated the
relevant framework classes to use templates.