Restructed all header files, typedef changes

Organized the headers into directories
Changed many instances where a typedef was used to use the template
argument instead.