Add nullable types and tighten up some new type system semantics.

This is a grab-bag patch:
* Add a new `null_t` type has a constant `null`, which can be assigned to objects or nullable types.
* Methodmaps can now be nullable with a `__nullable__` attribute. I chose this since it's sort of a hack that will go away when the transitional API is no longer needed.
* The delete keyword now zaps non-const lvalue inputs, for safety. There is no reason to keep the old value.
* Fixed a newdecl argument bug where `type-expr ::= ident '&'` wouldn't parse.
* Allow functag matching to coerce arguments and return value. This lets us specify derived types in functags signatures, but allow old scripts to keep a base type in their local signatures.
* Allow functags to accept new-style types as a return value. The functag parser is really bad and will probably be updated soon.