Fixing solvation database I/O

The solute library can read molecules as SMILES strings or adjacency lists.
If they can safely be written as SMILES strings, then they are saved that way too
because it's more concise.
Fix transport database I/O

This was pretty much entirely missing before.
Tiny tweak to thermo database I/O
One way to preserve database order using an OrderedDict.

This may have a performance penalty, so perhaps should be looked at again later.
It does at least mean that when you load and save the database, things like the
forbiddenStrutures file end up in the same order as how they started.

Sort order is (highest priority first)
 1. according to the tree, if there is one
 2. according to the entry.index values, if they exist
 3. preserving the order that they were loaded in, if Python > 2.7
 4. random