Nif changes and cleanup

Cleaned up and documented part of components/nif.

Work is ongoing, but I wanted to get this out here before I have any more merge conflicts/doing the same work as Scrawl is.

Of note is the new niftest tool and script.  Just point the script at your data file directory and it will validate every nif file.
This is a useless comment. It's obvious that a cpp implementation file handles the details of its header file.