Merge pull request #51 from alphagov/self-evaluating-predicates

Rather than having a single Evaluator, that acts on different predicate types, move the logic of evaluation into each predicate itself, and allow them to recursively resolve.
Let predicates self describe in a human form

Useful for debugging, and can be used in graph visualisations.

Currently graph visualisation has to know about each predicate
and it's internal implementation, this puts that repsonsibility
into the predicate itself
Minimal viable function predicate, one arg only
Parse multiple function args, with tests, and transform
humanize function predicate
Very hacky function arg calls

State tries to evaluate everything, immediately, unless you stop it

What would changing this behaviour break, and can that be reworked?
allow nested function calls, by treating evaluatables differently from state calls
(Very WIP, do not merge) Stop evaluating callable objects returned by state

Not auto-calling callables returned from state lets us get back plugin/function
values from state and let them be called by Function, with it's own choice of
arguments.

This seems to be tightly bound with the engine internals (especiall tests).

This commit makes all the tests pass, with auto-call removed, but may not
cover all cases if test coverage is missing. I don't fully grok whats going
on here, and the eval-if-possible in Named predicate fixes some things but
is affecting a lot more than planned.