Document objects in API location rather than where defined

This adds a mechanism for classes and functions to be documented where they are exposed as public API, instead of where they are defined. To do this:

- Add `__all__` to the module definition so that it doesn't expose all the random stuff it imports
- Add the API module name to `names_from__all__` in `docs/autogen_api.py`.
- Add the defining modules to the exclusions in the same file, so the objects aren't documented twice.

I've done this with `nbformat.current` (exposing things from `nbformat.v3`), and `IPython.display` (exposing things from `core.display` and `lib.display`).