More Swifty improvements

Following up on the discussion in #172, I made capitalized identifiers highlight as `Keyword.Type`. Also fixed a few edge cases and simplified the code a little bit.

I tested the changes on some (quite complex) files from my Swift project and I'm quite happy with the result :)

Unless I broke something on the way that I didn't notice, I think we should be set for a while ;)

/cc @ole
So you want to match identifiers unless they come after this finite set of keywords, yes?  Is it possible to match this set of keywords and push a state that has the inverse behavior?