Searching for music library tracks, finding all artists' albums and artist's album's tracks.

Adds searching for music library tracks, finding all artists' albums and artist's album's tracks.

This adds a set of search methods for the *music library* (not music services) by the means of updating `get_music_library_information` to support fuzzy searches, category searches and getting all matches by handling paging through results.

The new methods (that all call `get_music_library_information` with the new args) are:
* `search_tracks`: to find everything for an artist, artist+album, artist+album+track combinations
* `get_albums_for_artist` to get all albums for an artist
* `get_tracks_for_album` to get all tracks on an artist's album

The code works well and I've used this to search for a bunch of music library tracks automatically. It took a while to get the Unicode and URL encoding working especially from py2.6 to 3.x.  I also added a new compatibility call quote_path from urllib or urllib.parse (py3) that is used by new utility function `url_escape_path`. 

So with a check, something like this?

````
    def get_sonos_playlists(self, *args, **kwargs):
        """ Convenience method for:
            get_music_library_information('sonos_playlists')
            Refer to the docstring for that method

        """
        if len(args) > 0:
            import warnings
            warnings.warn("get_sonos_playlists positional args are deprecated and will be removed from 0.13", DeprecationWarning)
            for k, v in zip(['start', 'max_items', 'full_album_art_uri'], args):
                kwargs[k] = v
        return self.get_music_library_information('sonos_playlists', **kwargs)
````