MPD: Make "search" a substring match.

This seems to be what mpd does I and am rather used to that behaviour. I am
switching on caseSensitive here which may not be what it is intended for but
for now that only get passed through as false from one place so everything
else should still work fine.
MPD: Support "any" as a search type in find and search.

Currently I am just searching all the defined tag types. I am not sure if
there should be a specific order they are searched in or whether we should
just be searching string ones.

Now coerces the tag value to a string.
Start at last play position on restart.

We now save the current seek offset for the currently playing track in the
database whenever the playlist changes. Then on startup we look for a track
with the offset set and seek to there. We still start paused though,
hopefully.

Currently when we change tracks I am not unsetting the pos of the previous
track but just unsetting the pos of all the tracks but the current. To do
otherwise would mean instrumenting all methods that change currentTrack.

I had to do some fiddling on checkUpdateGroovePlaylist() to get it to use
currentTrack.pos instead of seekRequestPos. I didn't look at all the code
paths that influence that point but it seems to work in testing (with the MPD
protocol anyway).