changed bullet_nif_loader to not modifiy NIF file

The code in bullet_nif_loader was modifing the loaded NIF file as part of
processing. Currently this is OK since the NIF file will be thrown away
immediately, but it causes problems when trying to share loaded NIF files.
spread some const around NIF loading
cache loaded NIF files to eliminate reloads

Created a NIF file caching mechanism to prevent the system from
reloading a NIF during a startup and cell changes.
cache results of query for spash screen names

ResourceGroupManager::listResourceNames returns a list of all resource
accessable which is expensive, this change caches the result of the
processed query so additional splash screen changes are quicker.
fixed scoping of NIF file cache lock while loading new cells
enable move construction/assignment to key ESM data structure to reduce sorting costs
update the code to change texture file names to .dds
added a little template meta-programming to add a generic getValue function to NIFFile
specialized the get functions in NIFFile for little endian machines to be able to read in larger chunks
reworked KeyListT so that on little endian machines, it could be read in large chunks
refactored NIFFile parse to get better code/data seperation (not performance oriented)
include members of BSAArchives in Ogres resource indices
fix bug in cmake when not building esm tool
force process to terminate prior to starting rendering loop (note ExitProcess does no cleanup)