Changed AllMembersSupplier to call single-valued methods at parameter assignment time, not parameter use time.
Parameters are now matched on value, not defined type, for array and single-valued methods and fields.
Single-datapoint methods are now only called if the return types could be relevant, and theory parameter signatures are compared with types via a prebuilt map rather than reflection.
Further theory optimisation to avoid calling datapoint methods for multi-valued datapoints
Moved instance initialisation for type conversion map into static method
Minor tweak to improve symmetric set up of convertable types in ParameterSignature
Changed single-valued datapoints back to deferred execution
Tiny whitespace fix
Merge pull request #651 from pimterry/datapoint-result-reuse-#638

Fixes for #637, making theory parameters assignment more consistent across sources