Remove unnecessary includes.

The secondary goal here was to get as many includes out of .h files as
possible. I'm still unsure if I'm doing this right, but I'm learning
(slowly) and it sounds like having includes in .h files slows down
compilation, so it's best to avoid if at all possible.

There are several cases where I can't see how I could possibly not use
includes in the .h files, but I got rid of these where I could.

I also removed, for example, a globals.h reference and added a few
others where the file didn't need globals but did need classes that
globals.h included. I think this is still for the best. It's more LOC
but I think it should be cleaner/faster.

In other scenarios, I included globals.h where necessary but didn't
include classes that globals.h already includes for me. Hopefully this
is the right way to do things.