Optimizing ShaderRegisterCache creation/reset

Each ShaderRegisterCache instanciate approximatively 1000 ShaderRegisterElements each time it's created or reset.
Instead of that, elements can be staticaly cached and used for all ShaderRegisterCache instances.

When create new RegisterPool, the new process is:

 - create a simple hash for the elements's set with type and num registers( "ft8", "fs8", "vc128" );
 - store these elements in a static dictionary if they are not already created.