TR: handle forward references to annotated definitions better

This pull request improves TR's handling of forward references.

In particular, an example like

````
(define (f x) (g 0))
(: g (-> Integer Integer))
(define (g x) (add1 x))
````

requires shuffling the annotation around. This PR makes that unnecessary by adding a pass in-between passes 1 and 2 in the module top-level typechecker. Synthesizing types for unannotated definitions is deferred to this pass 1.5.

In addition, this PR adjusts some of TR's error messages to avoid the "untyped identifier" error and also suggests workarounds.