Swift: Beta 4, 5 changes and highlighting improvements

Hi! I picked up where @ole left off in #167 and:

- fixed the problem with `private(set)`/`internal(set)` not being highlighted properly
- updated the list of attributes and declaration modifiers for Beta 5
- added coloring of classes/protocols in @objc(Class) attributes and in class, protocol and extension declarations

Note that I don't _really_ know what I'm doing, but after playing around with the visual samples, it looks good to me!
I couldn't figure out how to pop out of the state if the next token doesn't match what I'm looking for… so I wrote this monstrosity to match an empty string. It works, but what's the clean, proper way to do this?