Python 3 compatibility, update to current KeePass.

Mostly difference between mixed byte strings in Python 2 and proper byte
arrays in Python 3.  Also a couple of syntax differences, API changes
and fixes to the import statements.

Replace the Salsa20 imports with a maintained version.  pycrypto doesn't
have it in any released version, therefore this is safer.  In order to
to this the de-/encoding of protected fields was grouped together since
the python-salsa20 API doesn't retain state.

The current KeePass file version is 3.1, change the written header
accordingly.

Change the sorting order of header keys so that 0 is last, but all other
keys are in sorted order (same is in the KeePass source) so that the
header hash results the same value (for now).

The written XML did retain some artifacts from the objectify call,
therefore a cleanup call to remove them was added.  With this, a
moderately sized test database did the XML roundtrip cleanly.

Decode strings to UTF-8 to prevent lxml errors and fix another couple of
places where specifying the encoding is necessary.
Current progress.

I.e. figure out the date comparisons and how to actually merge the XML
trees.