Document (almost) everything + change setup_schema function

Documents almost everything.  The only things I couldn't document were ``overrides`` in both the documentation and the API docs.  If you grep for 'XXX' in the code, you'll see where and what needs documenting.

This also changes the setup-schema function definition to not accept a ``mapper`` argument -- it wasn't used before, so someone using that function would always need to pass ``None`` or in fact anything - to be able to use the function.

That should do it!