Add function 'predicate'

This is a bit of a stretch of 'predicate', as they should be boolean, but that is
the naming convention everything else uses at the moment, so stay consistent.

- Parsing rules for a function predicate that looks like `function_name(arg_1, arg_2)`
- Transform to a Function model, which can evaluate the function and return it's result.
- The `with_eval` is a hack to get around State auto-calling any callable object, as its
  fetched from state. Changing that behaviour affects a lot of things, and I want to keep
  this commit small, so with_eval is a briding solutuin to get this working first. It
  should be removed shortly.
- Function args can be other callables (functions, predicates), if not they are assumed
  to be variables on state. This is a bit hackt, and we're probably missing a variable
  like model, which represents a value in state by nane, but has a evaluate interface
  the same as everything else
- It's assumed functions will be defined on state, either as a built-in, or
  injected by an external application when the flow is created.
Don't automaticaly call callable state values

The auto call behaviour was added in:
- https://github.com/alphagov/smartdown/commit/7f580593e6bf457bd228e81bb0d217f876a35ab0

With the assumption it would support plugins in the future.

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 was bound up in engine tests as it (ab)used the behaviour to inject a
set-membership like test into state.
- The Otherwise predicate was implemented as a lambda auto-called from state,
  so I have added an Otherwise predicate that evaluates to true, which is the
  same behaviour
- This commit makes all the tests pass, with auto-call removed, but may not
cover all cases if test coverage is missing. That said, i'm 99% confident
this shouldn't break anything.
Merge pull request #53 from alphagov/function-predicates

Function predicates