Fix error with linearity checking in patterns
Added %provide directive to parser
Added first steps in type providers

Now, type provider syntax is parsed and the providers are elaborated to
top-level definitions. Next step is to cause them to be normalized before
type-checking, possibly performing IO in the process.
Merge remote-tracking branch 'origin/providers' into providers