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.
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.
Fix memory leak: free iFCs when done.
Merge branch 'dev' of github.com:Metaswitch/sprout into reeval-ifcs

Conflicts:
	sprout/aschain.cpp
Merge pull request #40 from Metaswitch/reeval-ifcs

[Reviewer: Mike] Re-evaluate iFCs - Keith, I'm going to merge this so I can review the mmtel change.