Have been making various experimental changes.  Found that type erasure was causing problems - there was no easy way to write rules on a future's return type.  I've now created 'TypedFuture' that uses a manifest to capture the return type of the future.  This is yet to be factored into the other classes.
My previous experiment with capturing the result types of futures using manifests didn't work (you can capture 'List' as a result type, but not 'List[Int]' for examnple.  Instead, I've reworked the 'Validation' code so that is properly composes futures using 'map'.
Removed some unnecessary method typing.
Added a set of tests for futures, just to check that Scala futures and their methods work as expected.
Have improved the implementation of Validations, but have to finish the improvements and related tests yet, and then rework the other classes to match.
Re-worked Validation class now appears to be working correctly, after major rework.  Now the parameter/result/process classes need to be redone in a matching way.