Introduce terms.

Terms are used to match certain values in requests
and responses.

Strings, Symbols, Hashes and Regexps can all be
forced into an appropriate term type.

Hashes are forced into an AndExpressionTerm, each
of their values must match for the overall
expression to match.
Remove requests and responses - replaced by terms.
Remove finished items from TODO.