Librarization for eventual GearVR port

* move TextureCache out of interface and Application
* move GeometryCache out of interface
* remove dependency on Model from GeometryCache by moving implementing model blending behavior to new ModelBlender class
* move the ProgramObject to the libraries