LoginUtils.getCipher: Specify the modes and padding, and specify good ones.

android-lint said:
"Cipher.getInstance should not be called without setting the encryption mode and padding."
so I used the example transformation (algorithm/mode/padding) mentioned here:
http://developer.android.com/reference/javax/crypto/Cipher.html

This also meant having to get the initialization vector used during encryption to
provide it when doing the decryption. We use a new initialization vector for
every encryption of every message.

It was interesting to do this (apparently) correctly, but note that encrypted the
authentication details is still mostly pointless and unnecessary anyway, because we
already store them (and the encryption key and initialization vector) in private
SharedPreferences anyway. If someone has root access to the device then they will
still be able to get the unencrypted text - it's just a bit more difficult.
A secret key that's hard-coded in the source code might be a little more secure,
but even that could be obtained from the app's executable.