Rethink potential structure.

Add interface, force classes to implement it.  Add factory class for
obtaining instances of potentials.