Abstract classes for further analytic cases

Some abstract classes are provided in order to simplify the implementation of more analytic cases. Subclassing them should allow for minimum code writing while preserving all the SiegPy functionalities.

They were, for instance, used to define the classes that are specific to the 1D Square-Well Potential Case