fixes for using FFMPEG on windows
Factored a NIFStream class out of the NIFFile class.

Split NIFFile into two parts, NIFFile which is cached and is a container
for a parsed NIF, and NIFStream which is a class specialized for parsing
NIFs. This required a semi-sweeping change to make all record classes
accept a NIFStream instead of a NIFFile as an agurment to their read
functions.
refactored NIFFile parse to get better code/data seperation
reworked NIFStream to use a type-handler

Reworked NIFStream to use a type-handler system to decide how to extract
data from the NIF. It also has the capability to perform bulk reads on
compatible platforms, thus improving cell-load performance.
reworked Nif::KeyListT into Nif::CurveT

Renamed Nif:KeyListT to Nif::CurveT, moved it into its own file and
changed its implementation so that on compatible platforms, the entire
array of key-frames can be read in a single read call. Added a helper
class called Nif::CurveT::interpolator to allow other code to easily
evaluate the curve. Reworked part of the skeletonLoader code to use
the interpolator to simplify its own logic.
enable move construction/assignment to key ESM data structure to reduce sorting costs
hid JournalWindow behind IJournalWindow interface, and put its entire
implementation, class definition and all, into journalwindow.cpp
Updated journal layout to match Bethesda's version more closely
Created a class to represent a stream of UTF8 characters.
Created a MyGUI widget to present a page of formatted text.
Created a view-model to present journal data to the UI in the form it
intends to display it.
Created a helper class to format books for display from the journal
view-model data.
reworked journal to match bethesda's implemenation
fix for gcc not handling static constant initialized in class definition
port code to C++03
Merge remote-tracking branch 'blunted/adv_journal_gui' into bigmix

Conflicts:
	components/nif/data.hpp
	components/nif/nif_file.hpp
	components/nifogre/ogre_nif_loader.cpp