Avoid requires of contracts when they're not used.

This changes when various libraries that provide contract
support to possible contracted bindings to declare when
those bindings are needed.

Probably, each static-contract combinator should manually
add to the list, instead of having one fixed static list,
but this is a start.

Saves about 10ms in startup for an empty TR module on my
laptop.

Thanks to Robby for the idea.