[#973] Make sure we always talk about datastore resource and not just resources, extend introduction to include motivation for the datastore
[#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
[#1078] use SOLR data_dict instead of package_dictize when possible
[#1078] fall back to package_dictize on SearchError
[#1078] treat socket errors as solr lookup failure