Big refactorisation of the value setting code. Expect breakages as the changes aren't complete!
The parameter setting set() base class method has been shifted from the specific code to
the generic_fns.value module (and has been converted to a function). This method simply sets spin
specific functions and hence has been renamed to the set_spin_params() function.