Beginnings of 'deriving' overhaul.

Many of the deriving construct have been generalised, some concepts can
be wholly derived, and there are now specialisations for deriving a
concept method using a particular strategy (e.g.
derive_X<in_terms_of_Y<M>>).