Refactoring HdSt_CodeGen to take metaData as constructor arg.
This allows us to delay the construction of the codeGen object since the hash can be computed
from the constructor args. Prior to this change the codeGen object was created on every
invocation of HdStExtCompGpuComputationResource::_Resolve just so the metadata member
can be retrieved and filled in by HdSt_ResourceBinder.
Although HdSt_CodeGen::CompileComputeProgram was being called only for the first instance of
each program merely constructing the codeGen object on every invocation was doubling the time
taken in the _Resolve function when the use case involved 1000s of extComputations, as in
an example production crowds case.
With this change we can delay the construction of the codeGen object and make sure it is created
only for the first instance of each compute program. For the example case this change provides
approx 50% speedup in HdStExtCompGpuComputation::Execute and consequently >10% speedup
in frame rendering time.
(Internal change:
2311005)