WIP (do not merge yet):  Massice Headder File Cleanup.

WIP (do not merge yet)!

1. Renamed from .h to .hpp
2. Cleanup so only include what need to include. (and remove all circular dependencies).
3. Where necessary create new files to remove circular dependencies.