A large number of changes for scoping of types, plus the addition of keyword parameter support for ADT and constructor declarations