Do not record memory addresses of display objects

The `repr` of the `DisplayObject` class always shows the memory address, which is annoying, because if you rerun an entire notebook and have a bunch of displayed objects, then these are all changed in the notebook diff, because the memory address changes between runs (even if the what is displayed visually does not).

This pull request overrides the `__repr__` method of `DisplayObject` to suppress memory addresses, and adds a class variable called `_show_mem_addr` which defaults to `False`, but can be set to `True`, which will cause the behavior of `__repr__` to go back to what it was originally.