Linked Types

The main change here is adding a `Type` subtype `LinkedType` that has a reference to a parent type.  This is used in the `PatternTagger` so group types can refer to the entire pattern type.