revisit includes
* replace some with forward decls
* enforce include squence
* add missing api decls
add missing include
try runtime error on unknown uniform instantiation
add help to some util classes and make cached value interface const