Implemented by_tie_chain() on ScoreIterationAgent.

ScoreIterationAgent.by_tie_chain() combines the logic of three iterationtools
functions:

    iterationtools.iterate_tie_chains_in_expr()
    iterationtools.iterate_nontrivial_tie_chains_in_expr()
    iterationtools.iterate_pitched_tie_chains_in_expr()

Use the boolean keywords ``reverse``, ``pitched`` and ``nontrivial`` in any
combination to get the same effect as the above functions:

    iterate(expr).by_tie_chain(
        nontrivial=False,
        pitched=False,
        reverse=False,
        )

The iterationtools functions will be removed in a later commit.
Merged master.