Added explicit template instantiation and uniform getters.
small changes
Replaced Java-like listeners to std::functions
Small changes to support shader model 120