Optlang: Add in possible constraints in expression terms

These are not really used yet, but they're present for later.
Optlang: Add function for dropping an environment variable
Optlang: Add collapsing of calls if they have constraints

Note that there is nothing to add the constraints yet
Optlang: Add support for non-writeable references
Optlang: Lemmas about optl_eval not creating refs/labels
Optlang: Prove monotonicity for labels search
Optlang: Start proving preservation of non-writable refs
Optlang: Add list eval lemmas for reflocs_val
Optlang: Some tweaks to tacs etc.
Optlang: Some work on proving ref immutability
Optlang: Ref preservation OLetFun case (arrrggggh)
Optlang: Finish read-only ref preservation proof