This allows more back-ends to be compatible.
* Add a `backend` module `Backend` trait and necessary abstract types * Refactor handlers to use the back-end abstraction * Directly serialize to URLs where necessary in Mixcloud back-end * Require `serde` feature for the url crate