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`. 

Damn. I had not thought about that. I wonder, instead of changing it under the feet of users, if we could do some backwards compatibility trick like:

```python
def get_sonos_playlists(self, *args, **kwargs):
    for k, v in zip(['start', 'max_items', 'full_albu_art_uri'], args):
        kwargs[k] = v
    return self.get_music_library_information('sonos_playlists', **kwargs)
```
And then issue a warning if len(args) > 0 about deprecation. What do you guys think about that? It will add more code to all of these methods, but only for a few releases.