Pretty print references.

There are some (rare?) cases when a test for equality fails even though
the involved values appear to be the same. For example, the following
assertion fails:

    assertEqual("x", a reference to item 1 of {"x"})

and this is correct: the result of

    "x" = (a reference to item 1 of {"x"})

is `false`. However, when the above assertion fails, ASUnit prints two identical
values, which is confusing. Fix this by checking in pp() whether the values to be
printed are references and act accordingly.
Add a test.