Solver classes are easier to run in sequence. Custom sampler objects can now be fed to the solvers, these are implemented as subclasses of sampler, overriding the getValue function. The main file is severely cleaned up, and the classes should be easier to use with a custom main file