Extending function isMoleculeForbidden()

Because of the many new molecular structures possible by accounting for
lone electron pairs, such as ions and new forms of radicals, we have to
forbid, at least at the moment, certain structures until we have more
thermodynamic and kinetics information for them in our libraries.

- Until we have more thermodynamic data of charged molecules we will
forbid them
- We also forbid positively charged oxygen atoms
- We forbid at least at the moment oxygen atoms with bond order larger
than two and radical oxygen with a bond order of two
Introduction of a new reaction family involving lone electron pairs
forming single bonds

Example reaction: Acatat ion (CH3CO2-) reacting with water (H2O)

In both of the two contributing resonance structures of the Acetat ion
one of the two oxygen atoms is connected to the carbon atom by a single
bond and bears three lone electron pairs while the other oxygen atom is
connected by a double bond and bears two lone electron pairs. The oxygen
atom with three lone electron pairs can abstract a proton (H+) from a
water molecule where one of the three lone electron pairs provides both
electrons for the new single bond formed to the new hydrogen atom,
resulting in an acetic acid (CH3COOH) and a hydroxide (OH-) molecule.
Simple extension to draw.py to draw the lone electron pairs as angular
lines around atom symbols

- Needs further improvement to account for the direction of bonds to
adjacent atoms and the special drawing of small molecules
Adding GAIN_PAIR and LOSE_PAIR actions to ReactionRecipe

These action will be first used in the lone_electron_pair_bond reaction
family

- GAIN_PAIR increases the number of lone electron pairs on a specific
atom
- LOSE_PAIR decreases the number of lone electron pairs on a specific
atom
Adding lone electron pairs to group.py

- adding attributes for lone electron pairs
- adding functions __gainPair() and __losePair() and handling of the new
reaction recipe actions GAIN_PAIR and LOSE_PAIR
Improving performance of forbidding molecular ions

- temporarily, until we have more thermo and kinetics data on ions
Improving performance in atom symmetry number calculation

- treating special case of nitrogen in NO2 groups
Merge remote-tracking branch 'GreenGroup/master'
Merge remote-tracking branch 'GreenGroup/master'

Conflicts:
	rmgpy/molecule/atomtype.py
Introducing optional parameter in adjacency lists for lone electron
pairs

The following adjacency list example describes NO2 with the radical 
electron on the nitrogen atom with the following parameters where
numberLoneElectronPairs is new and optional:

atomIndex atomType numberRadicalElectrons numberLoneElectronPairs
bonds{}
1 N 1 0 {2,D} {3,S}
2 O 0 2 {1,D}
3 O 0 3 {1,S}
Save enthalpy discrepancy in matching list file.
Only try making png's for inline display for IPython console front ends.

If you had IPython, but were not running in a console that rendered png's,
then you would end up with the text __repr__ instead of nothing, polluting
your console output.  This is perhaps slow (making pngs that are not displayed)
and should be revisited, but is a temporary fix.
Keep track of which edge reactions need re-checking.

This should avoid the "check absolutely everything" when you run low on
species. When you match a species, you need to re-check the reactions
that it is involved in, in case you can learn anything new from them.
Fix problem trying to prune a reaction that's not in the edge.

(Presumably it was in the core??)
Use DFT_QCI_thermo database before comparing thermo estimates.
Refactor the chemkin importer code.

Move the "check reactions" into a separate function,
and now we can put it inside a while loop, so that if one set
of matches invalidates some reactions they are re-checked
immediately.
Refactor vote printing into its own function.
Make votes into sets instead of lists
Prune voting: remove reactions that vote for all possible matches!

Currently makes a new prunedVotes matrix, and prints it,
but doesn't use it.
Use unique (pruned) votes when deciding matches.