Move to a more RESTful API 

Long story short:

- `id` parameter is now parsed directly in `UriWrapper`, and is exposed as `uri.Id` in all API handlers
- `action` parameter is now parsed directly in `UriWrapper`, and is exposed as `uri.Action` in all API handlers which use it
- Preferred way of passing IDs is now `/api/songs/8`, rather than the old `/api/songs?id=8` method.  There is a minor patch which can be removed once the web client uses the new syntax.
- Refactoring and linearization of code-dense files, such as `PlaylistsApiHandler`.