add libspotify backend and rename spytify backend to be more descriptive
Hopefully quash some of the segfaults.

This puts a lock around the search function so it must return before it can
report a song as queued, decouples the searching from the queueing, and adds
a delay before anything that requires the session to function.

Note: There are still segfaults.
Whitespace
tweak location of session checks
cleanup some unused api calls
consistently use spotify URIs in queue.

links are strings and are deref'd at playtime
cast Link objects to string when using as keys
use deque for queueing, instead of list
properly return on failed search
Replace the missing unicodedata import.

How this has been missing so long I don't know.
Add 'blame' command.
Cleanup handling of Spotify queue.
Move MPD backend to avoid conflicts.
Pass the names of song metadata, not their objects
Attempt to gate state-changing methods.
Added a lock around auto_play.

This should stop all the auto-skipping of songs
Pull SongID to blame properly.
Cleanup
PEP 394 compatible shebang
Move gui bits to subdir.  Should get spun off later.