[#943] First draft if new writing extensions tutorial
[#943] Reformat setup.py_tmpl

Spaces, not tabs. Also fix random indentation.
[#943] Delete an unwanted return

This should not have been committed
[#943] Add some minimal extension best practices

There's probably a lot more to mention here.
[#943] Add tutorial section on error handling in extensions
[#943] Add __init__.py files to examples/iauthfunctions

These are needed for the extension to load successfully.
[#943] Move the example iauthfunctions extension

Put it in the same place as example_idatasetform etc.
[#943] Rename example_iauthfunctions plugin modules

Adding a v makes it clearer that they're successive versions of the same
module.
[#943] Update includes in writing-extensions docs
[#943] Delete stray __init__.py file
[#943] Edit the writing extensions tutorial

Lots of minor edits
[#943] Show .. todo:: items in Sphinx output
[#943] Add tests for example_iauthfunctions
[#943] Add some docs about testing extensions
[#943] Update some includes in writing extensions docs
[#943] Add docs on publishing extensions
[#943] Tweak a TODO in the docs
[#943] Prepopulate context in check_access()

In some cases authorization functions can get called without the basics
(model, session, user) in their context dict. For example this was
happening to the group_create() auth function in the
example_iauthfunctions plugin, but only when it was called via the
templates not via the API.

This commit just changes check_access() to always put model, session and
user into the context if they aren't there already before passing the
context onto an auth function.

get_action() was already doing this for action functions.
[#943] Add :raises: to member_list() action
[#943] Minor API docs correction