use repr instead of str in assertion failure messages

This will change the formatting of assertion messages to differentiate between types, eg changing:

``` python
>>> assert_equal('0', 0)
...
AssertionError: 0 != 0
```

to

``` python
>>> assert_equal('0', 0)
...
AssertionError: '0' != 0
```

I suppose this is a breaking change to folks doing odd things (eg catching and comparing exception messages, as in your tests). I think the improvement in clarity is definitely worth it.