Proof of concept showing simplicity of NSCoding

So yeah, I got annoyed with all the bugs we have saving/loading triggers and stuff, so thought I'd do a proof-of-concept on using `NSCoding`. Who'd have thought it would only take me 40 minutes, and result in fewer lines of code? (when we're properly done, we can remove all the stupid `dictionaryRepresentation` stuff, which will remove hundreds of lines)

With this branch, only triggers are archived at the moment. Of course the goal would be to archive everything we write to disk (shelves, QSCommands, catalogs) but this is just a proof of concept at the moment.
I haven't tested too much, but it seems to work nicely. The other side effect of this working is that quicksilver/elements.trigger.event-qsplugin#2 is now way less complicated (no need to use value transformers - we can just save QSObjects! :)

### The downsides...

The reason I never did this before was because it's completely backwards incompatible (without a lot of extra work on our part). After seeing quicksilver/elements.trigger.event-qsplugin#2 though and just how much sidestepping we've been doing over the years I got fed up and figured that backwards incompatibility isn't a problem. We just bump QS to v2.0 and be done with it.
So timescale... I'm kind of lost as to where v1.2.0-dev is, but does it include the UTI stuff? If so, then that's pretty backwards incompatible... so maybe we should just bump to v2.0 now?

**warning:** back up your `triggers.plist` before trying