Added _fingerprint attribute to Molecule class.

This introduces the concept of a molecular "fingerprint": a short string
containing selected information about the molecule. This is particularly
useful in graph isomorphism comparisons, as it's always much faster to
compare the fingerprint than to do a full isomorphism test. Two fingerprint
strings matching is a necessary (but not sufficient) condition for the
associated molecules to be isomorphic. The fingerprint is cached so that
it only need be generated once per molecule.

For the moment the fingerprint consists of just the chemical formula. It
may be worthwhile to cache some other structural information as well
(e.g. bond types). The fingerprint isn't really meant to be accessible
outside the class, but you can use the getFingerprint() method if you
really want to see it.