Right now latency generation can incorrectly select the scratch register
as a dependency-carrying register.
- Move the logic for preventing register selection from Uops implementation to common SnippetGenerator class.
- Aliasing detection now takes a set of forbidden registers just like random register assignment does.