Change usage to be modular rather than using %run

Before:

```
%run -i ipython_memory_usage.py # massive namespace pollution, no on/off switch
```

After:

```python
import ipython_memory_usage as imu
imu.start_watching_memory()
# do memory testing stuff
imu.stop_watching_memory()
# do other stuff
```

Still to do, but preferably in another PR and/or not by myself:

- `ipython_memory_usage_perf.py` is untouched. There is massive potential for code sharing so ideally it should be an option to `start_watching_memory` instead.
- make a few functions internal, leaving only an API for users.
- as you have already noted, adding setup.py