Clean up source code structure

Pretty large cleanup of the structure of the sources. Reduced needless directory depth. Merged directories containing few files. Eliminated a couple of unity headers (via include what you use). No functional changes. This will all be squashed down to 2 commits on merge.
@miguelportilla, @ximinez