Improved lilypondfiletools.Block LilyPond formatting.

Consider the following code:

    measure = Measure((4, 4), "c'4")
    staff = Staff([measure])
    score = Score([staff])
    score_block = lilypondfiletools.Block(name='score')
    score_block.items.append(score)

The above measure is underfull. Formatting it should result in an
UnderfullContainerError. And in fact if we format the measure, the staff or the
score we'll raise such an error.

However, until this commit, formatting the score block would raise no error and
would produce the following LilyPond syntax:

    \score {
    }

Why is this? It's all due to Python's hasattr implementation. When formatting
itself, Block calls hasattr on each item in its items array, testing if they
have anything like `_get_format_pieces` or `_format_pieces` that it could use
to construct some LilyPond syntax. Python's hasattr not only executes each
attribute it tests for but also traps any exceptions raised in the process.

And not only does it trap exceptions, but it also returns False if it *does*
encounter an exception. All together this means that we never find out about
our malformed measure, and our score block assumes that the score it contains
has no LilyPond format, so nothing gets formatted either.

This has been fixed by testing for the presence of `_format_pieces` in the
dir() of each item in the block's item array, and now exceptions are raised
again.