Don't display removed items in the library tabs
bz19823: fixed ItemTracker code for a corner case.

Here's what seems to be happening:

 - I would delete an item that was playing.
 - The backend would update the play_count variable and send an ItemsChanged
   to the frontend
 - Before that message got to the frontend, it would remove the item from the
   DB and send a second ItemsChanged
 - The frontend would call connection.commit() to try to see the changes for
   the first message, but this would move the transaction past the second
   change as well and now the item is deleted from the database, but
   ItemTracker wasn't prepared for that
 - OSX would ask for the row for the item and we would crash.

Added a test and a fix for this.  The fix isn't pretty, but I tihnk it should
do the job.  Added some code so that we would fails earlier in the process if
a similar error happens.