Swift: treat all uppercase idents as types
Swift: match keyword earlier

By matching keywords/declarations/constants before functions and variable labels, we can avoid some weird edge cases (for example switching on a tuple being interpreted as function call) — without having a big list of exceptions in respective rule regexes.
Swift: require variable labels to be lowercase

This fixes `case .Foo:` and `class Foo: Bar` being interpreted as labels