First version using a goroutine to manage music collection

- Use goroutine to own collection
- Refresh every n times it's used.
Fix quoting of command line args in shebang line
Refactor refresh_mpd to get PathToParts available elsewhere
Don't require music dir in MpdPlaylist

- We get the files from mpd, we don't need the music-dir
Fallback behaviour if mpd only knows about paths

- If the track and album are empty in the mpd playlist, it is probably
  having trouble resolving the path to the db. Fallback to parsing the
  'file' attribute.
Timeout and refresh the mpd collection every minute in the background

- Could probably could use a refactor to put this in the MpdPlayer
  class, but here's the skeleton.
All handlers use channel for collection access
Clean up logging
Move control & playlist updates to 2s now that logging is minimal
Remove 'action' clutter
Tidy up CleanUp method in playlist.go and make it private
Encapsulate MpdPlayer goroutine logic
More encapsulation of MpdPlayer

- all handlers take a single Player interface in composition
- add Player.GetControls() and Player.GetPlaylist() via channels
- remove explicit channel access outside of player package

All this shaves 300-400us from each request to /playlist and /controls
Move handlers/main.go to handlers/index.go for clarity
Merge pull request #4 from werkshy/channels

Channels