Adjust contract generation for provides in TR

Use the same mechanism as ordinary require/typed to generate
contracts for provide forms.
Eliminate special cases for top-level contract gen

Use the same mechanism as require/typed for doing all
contract gen for make-predicate, cast, etc. Also don't
special-case contract generation for top-level require/typed.