Big commit to change the basic way to convert between types.

The idea is that all routines are automatically passed through a
canonical function, that converts an interaction to the canonical form.
Conversion into and out of this form are kept in the same function to
keep the inversion close to each other.

Also some changes to adapt to gromacs 5.0 mdps
Some bug fixes; not entirely working correctly yet

Form should be essentially correct, though.
Merge branch 'develop' of https://github.com/shirtsgroup/InterMol into canonical

Adding in the fixed lammps unit tests.
Fixing some lammps input files.
A few scattered bugs in lammps parsing.
More fixes for lammps writer

merged dihedral and improper functions.
returned the dihedral test to original complexity.
Eliminated a few bugs on write.
fix typos in lammps output.
Several more lammps writer fixes.
Big rewrite to handle forces generally.
A couple of bugs on reading in last commit.
Some lammps run fixes
Writing out correct number of bonds/angles/dihedrals now.
pair_modify mixing rule fix.
catching virtual code, and fixing error in pair mix
Some attempts at fixing the dihedral matching between lammps and gromacs.
Merge branch 'canonical' into develop

Pulling back the 'canonical' branch, which includes changes to
isolate transformation specific cdata.