Rename <numeric> -> <number>

This is consistent with what Typed Racket uses
compiler: Simplify lambda form parsing

- Make ExtractNativeFunction.ScopedListOrDatum public as
  sst.ScopedListOrDatum. The code is otherwise unmodified.

- Collapse the 5 cases of lambda parsing in ModuleBodyExtractor (3 for
  (lambda), 2 for (define)) in to 2 cases using ScopedListOrDatum. This
  also improves our frontend performance as a side effect
compiler: Typed lambda support

This adds support for typed lambdas using both (lambda:) and (define:).
The syntax is based off of the Typed Racket syntax except we don't
support typing rest arguments at the moment due to the lack of support
for typed lists.
stdlib: Remove duplicate definition of (let)