Introduce a BondType for aromatic bond support

BondType is a discriminated union which can either be a Strength holding
an integer to indicate the strength of the bond, or, Aromatic.

So, a bond in a molecule is now specified with two integers indicating
the indexes of the two atoms being bonded, and a BondType

I've added the makeBondList function to the test helper to save having to type
Strength(x) in all the expected molecules in the tests. It also reverses the list.
The bonds in the molecule are built up with "newBond::theExistingBonds" so
they end up in reverse order. This allows me to specify the expected bonds
in the tests in a more logical order.
Add 'Default' discriminator to BondType

pbond parser uses this for omitted bonds instead of assuming
they're single strength bonds. (They will actually be single strength
bonds or aromatic bonds.)

For convenience, specifying 0 as the integer bond strength in the
tests as input to the 'makeBondList' helper will convert the bond
to a Default type.
Handle lower case c, o, s and n for aromatic atoms

For simplicity, I'm just treating them as normal (aliphatic) atoms. If the bond
between them is omitted in the SMILES string, a Default BondType will be
included between them.

It feels a bit like I'm throwing away some information that's being provided
with the intention of helping me, but I'm pretty sure I'm still going to need
some post-processing to replace all the Default BondTypes (i.e., detect the
aromatic rings...a Default BondType becomes aromatic if it's in an aromatic
ring, otherwise it's a single strength bond)

We can't always assume that two adjacent aromatic atoms form an aromatic
bond - think about biphenyl, for example - http://en.wikipedia.org/wiki/Biphenyl)

I may well be misunderstanding something here, but for now, I'm going with
the simple/quick solution