bugfix: capture skip results in teardown blocks

This fixes a bug where and `skip` calls in teardown blocks would
produce error results.  This tweaks the teardown block exception
handling to specifically look for and capture skip results.
Merge pull request #148 from redding/kr-teardown-skips

bugfix: capture skip results in teardown blocks
optimize fail msg handling

No need to create all these fail msg strings if the assert passes.
This moves the custom "what failed" message definition to a block.
The block is only yielded to if the assertion fails.

This also reworks the processing of fail messages to not work in
Procs but instead just take arbitrary string args and join them with
new lines.

The added overhead of creating a block for every what failed message
should be negated by removing the overhead of creating a proc for
processing every fail message that we were already doing.
Merge pull request #147 from redding/kr-fail-msg-optimizations

optimize fail msg handling