Convert to use #next_node_if

also added a convenience predicate for checkbox nodes which can check
whether the response was in a given list of responses.
Convert to use #next_node_if
Convert to use #next_node_if
Convert to use #next_node_if
Use next_node as fallback in multiple choice question

Instead of the next_node command overriding the other calculations, use
it as a fallback if no other match is found. I haven't verified that no
flows rely upon this behaviour but am in the process of going through
every flow to rewrite the next_node calculations. I would be surprised
if the override semantics would have been relied upon as it's a slightly
counter-intuitive behaviour anyway (I think treating it as a default
would be more of the expected behaviour).
Convert to use #next_node_if
Add country_in convenience predicate
Allow conditional next_node clauses by nesting conditions

The on_condition() block allows you to define a scope within which the
given predicates must be satisfied. It modifies all #next_node and
next_node_if invocations

Example:

```
on_condition(->(r) {r == 'tourism'}) do
  next_node_if(:outcome_visit_waiver) { %w(oman qatar united-arab-emirates).include?(passport_country) }
  next_node_if(:outcome_taiwan_exception) { %w(taiwan).include?(passport_country) }
  next_node_if(:outcome_school_n) do
    country_group_non_visa_national.include?(passport_country) or country_group_ukot.include?(passport_country))
  end
  next_node(:outcome_general_y)
end
```
Change to use next_node_if

also added #responded_with predicate
Convert to use #next_node_if
Add #response_has_all_of predicate
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if
Refactor to use #next_node_if