work on globals

def now has semantics distinct from set!. You can no longer set! a global unless it has first been defined. Also added the infrastructure necessary to support immutable globals.