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.