Factoring:  Create one shared_ptr of Resource_manager, programs loads objects
Program:  loads its own shaders
Polygon:  Use resource manager to load them