resource loading performance v2

change ConstrainedDataStream to use the lowest level file API available on the platform, change ESMReader to use a ConstrainedDataStream instead of ogres file stream implementation.

recreated commits to include fixes from feedback, and have a cleaner history