Big surface algorithm update

This is pretty much my complete surface algorithm.
Includes:
Slab generation, including by terminations.
Eliminating polar slabs
Eliminating duplicate slabs
Calculating GULP surface energies - Requires GULP on the path.

The unittest test_makesurface should do everything, and is a good reference on how to use the code.
Surface algorithm is completed

Includes updated surface object
New surftools objects to recognize symmetry and remove duplicate planes
Elimination of polar and duplicate terminations
Primitive slab calculation
GULP calculation of surface energy via Tersoff potentials for binary oxides
VASP IO set for surfaces
Surface Dictionary writer - key is index, values is a list of surfaces with that index
Complete surface directory writer

Next to upload = Wulff constructor