Refactor iFC interpretation.

Introduce classes Ifcs (carries a list of iFCs) and Ifc (a single iFC). Move
appropriate function into them.

Separate lookup of Ifcs from interpretation of an Ifc into an optional
AsInvocation.

Convenience method to interpret a whole Ifcs into a list of AsInvocations,
preserving existing behaviour.

Some code tidyups and extra comments.

Additional UTs to preserve code coverage.
Comments on possible futures.
AsChain now holds an Ifcs, rather than a vector of AsInvocations.

on_initial_request now interprets the iFC, returning Next if it doesn't match
and otherwise applying the AsInvocation as before.  Logging level is boosted
because we no longer invoke Ifcs::interpret (which logged the result of
interpretation).

Deprecate Ifcs::interpret. It's now only for special cases.

Fix up existing UTs.

Note that this code is still bugged - stateful proxy doesn't correctly handle Next.
Test-driven development: add failing tests.

Test the behaviour of Disposition::Next on originating and
terminating sides. We know this is currently broken.
Ignore Authentication headers without responses
Clarify comment and log
Paths are bound to AoRs
Store set of AoRs, allowing multiple endpoints on a single flow
Comment future requirements
Merge branch 'dev' of github.com:Metaswitch/sprout into reeval-ifcs
Merge branch 'ut-robustness' of github.com:Metaswitch/sprout into reeval-ifcs
Correct handling for skipped/internal links.

Add a new disposition `Complete` meaning we've reached the end of the
chain.

Make originating and terminating handling each loop (while advancing the chain link) until they get
a non-`Next` response to a link.

Move the move-to-terminating-chain handling up a level, and remove duplication.

UTs now pass! Yay TDD.
UT coverage of no iFCs doc - non-local case.
Always examine tdata, not rdata.

Previously we sometimes examined rdata when it was available, e.g.,
when constructing an AsChain. With this fix, we no longer do that
- we always look at our current copy, tdata.

This is required in order to handle chains of internal ASs: an
internal AS may modify the message, and this must affect future
iFC evaluations etc - so we must always examine the latest copy,
which is in tdata.
Refactor to use _req instead of tdata.

_req is a member of UASTransction which is an alias of tdata, i.e.,
the request we're considering forwarding on.

So it doesn't make sense to pass tdata around - just use _req instead.
Resulting code is terser and clearer.
Re-enable MMTEL UTs.

Enable one MMTEL UT that can be made to work. (with some workarounds
for a Privacy bug).

Leave one that relies on multiple Privacy invocations disabled,
because it doesn't work.

Add a new MMTEL UT covering CDIV. This currently fails.
Fix dodgy-looking exit-context call.
Pull message handling into separate method.

handle_non_cancel now encapsulates incoming, originating, terminating, and
outgoing handling in a single method.

The initial 100 Trying is not in this method, because it should only happen
once even in recursive MMTEL cases.
Markups
Merge remote-tracking branch 'origin/master' into check-aor-for-paths