Make theseus composable with other profile hooks.

Since profile hooks are a lot simpler than trace hooks, it's totally
easy to compose them.
Cooperate with cProfile's profile function.

cProfile, apparently, uses the lower-level PyEval_SetProfile instead of
sys.setprofile, so the cooperative installation takes a bit more
work. As a result, theseus tracing is actually a little faster now
because it doesn't go through some extra layers in the general case.

The pure-python Tracer can't cope with this, but can at least provide an
informative error message.
Add docstrings to the cython tracer.
Clean up CythonTracer.uninstall.

- Make it behave like Tracer.uninstall in that it will not uninstall a
  profile hook that it didn't install.
- Unset references to the previous profile{func,obj} on uninstall.
Clean up a Tracer if it's still active on dealloc.

So far I haven't managed to hit this case, but it might happen, and
cProfile guards against it.