Add support for "intrinsics" (see #205) to Core. These are just written as foreign bindings, prefixed with a % (e.g. external val ( + ) : int -> int -> int = "%int.add").
Verify checks intrinsics exist and have the correct type.
Adds back the constant folding pass removed in #184.
%
(e.g.external val ( + ) : int -> int -> int = "%int.add"
).