Restrictions and other improvements

Kind of a big update. Here’s an overview:

  * Restrictions (match/ignore) are **finally** possible! It’s no longer just a useless tease in the NIB.
  * Added events for inserting and removing headphones. Might look familiar to @pjrobertson. And yes, @tiennou, you have to hang onto the blocks to remove them later, which is weird, but wasn’t that bad in practice.
  * Switched to ARC
  * documentation to explain the usefulness of the Event Trigger Object proxy
  * documented what the Event Trigger Object will be for events in this plug-in
  * use the event’s name as the Event Trigger Object if the event doesn’t provide one
  * some cleanup and modernization

This is *not quite* ready for release. If something isn’t done yet, it’s because I need help, so take a look. :wink: Outstanding issues:

  * The UI needs a bit of work.
    * 80% of the time, it uses the main interface’s colors instead of the ones defined in the code.
    * The comma trick works, but the picker looks awful when you do it.
    * Text entry mode is (and should be) allowed, but then ↩ doesn’t do anything.
  * I’d like to add events for switching between battery and AC power as well.
  * It would be nice if the match/ignore stuff were more flexible, but I can’t fathom the UI it would require.
    * Match/ignore files based on UTI
    * Recursively match/ignore folders
    * Match/ignore based on catalog source