added caching of compiled shader programs
added attribute divination to program objects