AMBER engine

This implements an interface to AMBER using the Engine object, so we may use it to optimize force fields in a similar manner to GROMACS, TINKER, or OpenMM (the currently implemented interfaces).

Still need to implement the following methods:
1) Geometry optimizations
2) Multipole moments or partial charges
3) Normal modes

We need these methods to be in high precision because of the way ForceBalance takes numerical derivatives.

Also need to write unit tests and update `test_engine.py`.