Refactoring to ensure that (1) rEnv is produced as output by the type system and that (2) rEnv is kept in the monad rather than passed explicitly.  This is with the intention that a future module system would pass the rEnv produced by one module to another when the latter module is typechecked having imported the former module.  It also allows access to rEnv from within derivation (without cluttering the theory) which can be used to improve type manifestation.
Fixed garbage collection w.r.t. opaques.
Corrected type manifestation bug by ensuring that opaque constraints are properly attributed during derivation of empty collection expressions.
Added logic to strip nodes which are unspecified in the type system and should not be typechecked.
Merge branch 'master' of https://github.com/DaMSL/K3-Core