osx: improve Media Keys support

This commit addresses some issues with the users had with the previous
implementation in commit c39efb9. Here's the changes:

  * Use Quartz Event Taps to remove Media Key events mpv handles from
    the global OS X queue. This prevents conflicts with iTunes. I did this on
    the main thread since it is mostly idling. It's the playloop thread that
    actually does all the work so there is no danger of blocking the event tap
    callback.
  * Introduce `--no-media-keys` switch so that users can disable all of mpv's
    media key handling at runtime (some prefer iTunes for example).
  * Use mpv's bindings so that users can customize what the media keys do via
    input.conf. Current bindings are:

      MK_PLAY cycle pause
      MK_PREV playlist_prev
      MK_NEXT playlist_next

An additional benefit of this implementation is that it is completly handled
by the `macosx_events` file instead of `macosx_application` making the
project organization more straightforward.
command: add the current local time as a property

This adds a the property 'clock', which returns the current
local time as the string hh:mm.

Additionally the keybinding 'shift' + 'o' was added to displaying
the clock as '[hh:mm]' .
macosx_events: make remote property an instance variable

There was no reason for it to be public.
keycodes: fix copy paste error

Makes 213ad5d behave has intended.
docs: update tech-overview.txt
macosx_events: DRY up key lookup over dictionary

Two methods duplicated very similar behaviour. Extract method with the common
behaviour.
macosx_events: handle key modifiers with media keys

This was overlooked in the previous inplementation. Adding it required some
refactoring of the `handleKeyDown:` method in order to extract common parts
with `handleMediaKey:`.
ao_oss: uncrustify
ao_oss: switch to new AO API
ao_oss: remove global variables
ao_oss: remove duplicated format info

Instead of having two big switch statements to convert between two
audio formats, use a single table.
ao_jack: uncrustify
ao_jack: switch to new AO API
ao_jack: align data sizes on audio frame size

Fixes crashes when playing with certain numbers of channels. The core
assumes AOs accept data aligned on channels * samplesize, and ao_jack's
play() function broke that assumption:

    mpv: core/mplayer.c:2348: fill_audio_out_buffers: Assertion `played % unitsize == 0' failed.

Fix by aligning the buffer and chunk sizes as needed.
ao_jack: remove global variables
m_option: allow setting empty lists

There's no reason why this should be forbidden.
core: reset pause state by default when going to next file

Apparently this behavior is more intuitive/better to users.
command: human readable output for metadata property

Slightly better output when printing ${metadata}. Print each metadata
item as "name: value", instead of the raw list. It's still not very
great, though. The old format is still available through ${=metadata}
for things which dare to use the broken slave mode.
command: replace some show_ commands with properties

show_chapters, show_tracks, and show_playlist are killed and replaced
with the properties chapter-list, track-list, and playlist. The code
and the output of these stays the same, this is just moving a lot of
code around and reducing the number of properties.

The "old" commands will still be supported for a while (to avoid making
everyone angry), so handle them with the legacy layer. Add something to
suppress printing the legacy warnings for these commands.
core: merge defaultopts.c into cfg-mplayer.h

There isn't really any reason why this should be in a separate source
file.