VideoBackends: Use unordered map for shader objects

atm we use the default std::map for shader object lookup. So we do log(n) memcmp(uid) to find the matching object.
This branch tried to use a hash, so that we'd have to hash and to memcmp once per lookup.

For performance test, I've also removed the precheck in OGL (to not memcmp twice, but hash more often) . This still have to be checked.