Add TypeModifier and LocalModifier

The previously flat (except for Variance) hierarchy of modifiers now
looks like this:

- Modifier
  - TypeModifier
    - LocalModifier
      - ValueModifier
      - FunctionModifier
    - VoidModifier
    - DynamicModifier
  - Variance
    - InModifier
    - OutModifier