Practice: Ugly word-strengthening bug fixed (again)

This bug was once fixed in 3ddb1d4f403f10dd6336b327ec3b02f4fac129a4, but I
removed the fix in 1965e85beeb610a3a55cabe3e721515464eb4c1b, since it made
early practice impossible.

When the client manages to send a word update request to the server, but fails
to receive the acknowledgement, it will send the update again. The bug is that
if the request is a strengthening request, the word will be strengthened twice.
(Or if the client's Internet connection is slow, maybe more times.)

Now I have introduced a proper fix: when the server sends the word list to the
client, it includes the date and strength of each word, and the client sends
that information back when asks for the word update. If these don't match with
the date and strength in the database, it means that either this update have
already been performed or another process modified the word's date and/or
strength. In either case, we don't want to modify the word, so the server will
ignore the request and send back 'ok' to the client. (Another possibility would
be to send back another response that the client would recognize and display to
the user in a non-intrusive way.)