MusicController: reduce CPU of updating elapsedFrames during playback

- Instead of calling dispatch_async (which we know is slow) every time
  in playProc, which is extremely frequently, we only need to do it
  every time we do a postNotification which is much rarer (every 0.1s)
  - playProc() now calls setElapsedFrames: directly which is fast
  - dispatch_async is called only if a notification needs to be posted
    (it updates UI so needs to be on a main thread)
  - If setElapsedFrames: is already called from a main thread, no need
    to do a dispatch_async and just post notification directly
    - Happens in receivedPlayTrackNotification:
    - Avoids any lag in UI updating where possible
- This reduced my CPU usage on an 191kbit MP3 from about ~7.8% to
  ~6.3% (so about ~1.5% in total)
Merge branch 'master' of github.com:mileswu/dokibox