Refactor: defer MPD connections until necessary

- A wrapper around MPDClient delays the connection to MPD until
  the MPDClient is used (by intercepting __getattr__)
- Since we cannot use the @needsmpd to handle errors, use APIException
  to raise errors in API views
- Removed json_error() a new error handler for APIException catches
  the exception and returns a json object with an error
- Log all APIExceptions as warnings
Change error icon in the interface