use stdlib `PP.pp` to show objects in fail messages

As opposed to default way of using `inspect` to show them.  Control
this mode using a config setting (`pp_objects`) or a CLI flag (`-p`).
Uses the stdlib's `PP.pp` to do the pretty-printing by default.  Pass
a custom proc to `Assert.config.pp_proc` to get custom pretty printing
(ie awesome_print, etc).

This is to help with analyzing fails on objects that are very complex
(large text chunks, objects with unfriendly inspects, hashes, arrays,
etc).  This also preps for using `diff` output in `assert_equal` fail
messages.