Made the all_steps, the is_executable and the selection_probability_factor optional.
Removed the old optional concept checks, they were replaced with the default member functions.
Made the serialization function of the configuration class optional. If no serialization function is present, nothing will be serialized.
Changes due to the introduction of the optional functions:

* The selection probability factor and the is_executable are available as optional function, that first determinest whether the step class defines such a functions, and forwards the result if it does, or returns 1.0 or false if the step does not define such functions.

* For the serialization this is not possible (there are problems detecting template member functions, and the private functions are also not detectable). So the user has to define a function whose presence determines that the configuration class is serializable

* Changed the structure of the rejection free and non-rejection free algorithms.
** The simulation class no longer has a template parameter rejection free, but two SFNIAE related functions do_steps that do (non)-rejection free steps based on the member function template parameter.
** In future there is just one class for each algorithm having a template parameter specifying whether the algorithm is ment to be rejection free (default is non-rejection free). A typedef AlgorithmRejectionFree is provided for suitable compilers.
Solved the problem with the optional serialization by using the SFINAE pattern directly in the simulation class.