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 not a good comment. All it does is describing the implementation. This creates work in updating the comment whenever something in the implementation changes.
Comments should only describe peculiarities or warn about unexpected pitfalls.