Initial commit of JSON + matching improvement rewrite.
artwork sort order needs to be non-zero
for consistency, return empty lists (not dicts) on failure
Some work on the proxy phase-in stuff discussed in chat…  legacy requests and hash-based "ShouldProxy" methods implemented, still to do: make the data returned from legacy requests conform to the expectations of the new agent.
Finish implementation of legacy requests for proxy phase-in.
gracefully pass if we can't hit PROXY_THRESHOLD_URL
Make sure recursive calls to GetAlbumsByArtist don't fall back to legacy requests.
Added preference for genre import (genres "tags" are pretty unreliable from Last.fm -> http://forums.plexapp.com/index.php/topic/39945-music-scanner-use-the-genre-of-original-files/ )
Re-initialize artist/album lists so subsequent searches don't keep appending.
Better album matching for newer stuff, albums not picked by in albums by artist query.  Limit album matches.  Dedupe lower quality artwork.
Reverted some artwork changes until I figure out what's going on there.
Real fix for duplicate/low res artwork.
Use proper quoted utf-8 for album/artist ID's, add Russian language.
Use real list of Last.fm supported languages.
Refactor album matching to be much faster for artists with lots of albums, fix wonky Various Artists artwork, fix bug that caused duplicate search results on subsequent fix matches.
Better error handling around album scoring.
Don't have syntax errors :P
Use +'s in new-style ID's to preserve compatibility and give good results in cases where some requests are new and some requests are legacy-style.  Not using the Framework's usePlus because it seems to return spaces for unicode strings for some reason.
Fix xpath for legacy XML calls to avoid bizarro ABBA.
Use 100% new requests (for testing).