Potential fixes to #1 and #5 & updated ServiceStack

Fixing #5: Importing database crash

This was due to multiple threads trying to access sqlite at once.
Cacher now locks to prevent this and is also transactionalised.
Due to some very odd behaviour from either ormlite or sqlite,
I've had to transactionalise EVERYTHING otherwise any operation
that isn't transactionalised fails.

Fixing #1: Names being blank

I think this was down to the code only using the card ID when
no user was found in the db; it should also have done this when
the user was present but had no name set (the new behaviour).
Fixes #3: QuiRing should now no longer crash if you hit enter from
the name input field in the find user form when the string you
have entered is not present in any name.
Fixes #2 - Cacher wasn't assigning the result of synchronisation,
so locally stored values were not being appended to the remotely
sourced values when a remote connection was available.
Fixes #6 - the terminals and zones that a card will grant access
to are now shown as checked in the QuiRing interface when the
card is read.
Extra fix for #2: Users not saved in QuiRing.

Users already enrolled on Qui were having their
names removed in QuiRing (names were not being retained from the
local cache when updating with an existing remote user).

QuiRing should now behave as expected when saving.