Type inferer and predefined entities are no longer single objects. They
can be instantiated like other classes.
An SSA variable now has an `inferred type` field which represents its
type. The type is filled in when loading a bundle, and can be dependedn
on during execution.
Added stricter static checking related to variable types.