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

Hi @dajobe 

Sorry, I don't think I was thinking straight.

There is no need to make this sort of special case (which has the drawback that it will not give the correct error messages is the same parameters is passed both as arg and kwarg) or to deprecate anything. We should just take `*args, **kwargs` as arguments, insert the search type string at index 0 in args and pass `*args, **kwargs` on to get_music_library_information.

I'm sorry about the mistake of double work.