Pretty print output values in fail messages

This adds pretty-printing of object values in assertion fail messages.
Before, we were just doing a blanket `inspect`.  Now this is abstracted
by a `pp` util method.  The `pp` util also encodes the output if
Encoding is available.

The pp operation, by default, is still to `inspect` the object.  This
can be overridden using the `pp_processor` config setting.  I've included
a README section describing its use.

All assertion fail messages have been updated to pretty print instead
of just inspecting their object values.

This is added for two reasons:
1) neat feature to add, plus encoding support
2) this is in prep for showing diffs on `assert_equal` fails.  this
   abstraction needs to be in place.