Makes the sub-interfaces of StatementContext speak for themselves and lets
all implementations of (previously) CompositeStatementContext to go with
one or more sub-interfaces instead. This will have the benefit of having
the cake deflated, i.e. no delegates delegating to pure delegates, but
only delegations between actual implementations.

At the moment this incurs a higher cost when creating the statement
context, but much lower when interacting with the context. The next step
will probably be to reduce the amount of statement contexts we create.