Solver can now handle simulations with no edge species or reactions.

This allows us to use the solver to simulate our final model with just
the core species and reactions.
Fixed bug in saving of high-pressure limit k(T) to Chemkin file.

In order to check that a high-P limit expression exists, we need to check
both that the highPlimit attribute of the kinetics object exists and that
it is not None. Before we were only doing the former, and so were trying
to write Arrhenius parameters for a None object.
Turned on checking of quality of k(T,P) interpolation model fits in RMG jobs.

This prints a warning if the k(T,P) interpolation model is not a good
approximation of the grid of k(T,P) values.
Can now store termination criteria on reaction system objects.

This is done so that we can allow for specifying termination criteria that
varies between reaction systems. It also makes the code a bit easier to
read, so it seems like a natural thing to do, especially since we define
the TerminationConversion and TerminationTime classes in rmgpy.solver.base
anyway.
Input format now requires specifying termination criteria per reaction system.

This gives us the flexibility to specify different termination criteria
for each reaction system. For example, if you are building a model of
low-temperature combustion using several reaction systems at various
temperatures, you might be satisfied with a low conversion at low
temperature (where the fuel doesn't ignite) and only require a high
conversion at high temperature (where the fuel does ignite).
Updated example input files with new syntax for termination conditions.
Fixed reading of efficiencies from chemkin files as well as handling of
ThirdBody Reactions.
Added generateFluxDiagram.py script for generating flux diagrams.

The script accepts as input the path to an RMG-Py input file for a
completed -- or interrupted -- job. It reads the reaction model from the
last Chemkin file and species dictionary, and the reaction systems from the
RMG-Py input file. Each reaction system is simulated using the loaded
reaction model, and a flux diagram is generated. (You will need mencoder
to generate the movie itself.) If species drawings are available, they are
used for the nodes.

The fluxes displayed are actual molecular/molar fluxes (not carbon or heavy
atom fluxes). The function getFluxPairs() determines the pairings of
reactants and products for the purposes of the flux diagram; it probably
needs a better algorithm for handling A + B -> C + D reactions.
Gathered options for flux diagram generation at top of script.

I expect that end users will want to tweak these depending on which
reaction model and reaction systems they are using, so I've tried to make
it easy to find them. It might be worth making them configurable via the
command line, but that's a separate commit. More options can easily be
added if we find them necessary and/or useful.
Added loadRMGPyJob() method to generateFluxDiagram script.

This encapsulates the functionality for loading the RMG-Py job data into
a function, in preparation for adding functionality for loading RMG-Java
job data as well.
Added partial method for reading RMG-Java condition file to RMG class.

N.B. The current implementation of the new loadRMGJavaInput() method is
quite incomplete; it only loads the information needed to generate flux
diagrams from RMG-Java models. Someone will need to finish this method in
the future if we want to be able to convert RMG-Java input files to RMG-Py
automatically.

Also needs more comments and debugging!
Added preliminary support for generating flux diagrams from RMG-Java models.

Writing this now because I'm sure someone's going to ask me to do it
anyway. Plus it should help with RMG-Py vs. RMG-Java comparisons.
Also draw species when generating flux diagrams from RMG-Java.

RMG-Py does this during the course of its execution, but RMG-Java does not,
so we must draw them now before we draw the flux diagrams. My experience is
that this is fast relative to the rest of the process (and certaintly worth
an extra time investment).
Merge branch 'flux'
Restored restart file reading/writing to working order.

* The duplicate attribute had been added to TemplateReaction and
  LibraryReaction, but the corresponding __reduce__() methods had not been
  updated to include this as an item to be pickled.

* RMG was still looking for restart.pkl.gz instead of restart.pkl.

* The postprocessing of the loaded data from the restart file was updated
  to reflect how some variables have moved around, in particular those
  that were collected into the RMG class.
Merge branch 'master', remote-tracking branch 'josh'
Better categorizing of MultiKinetics reactions when reading 
chemkin files.  

Not all MultiKinetics reactions are from reaction
 libraries, so do not assume that.
Keep species sorted in original order they were added to RMG core
rather than ordered by index in the output HTML
Create directory for species images if needed
in the output.py file
Removed debugging printout comment.