precommit hooks return an array of files
preupdate hook returns a new file

only accepts one path not an array of paths

refs #2682
run the postupdate hooks before updating the stores

this allows the hook to modify the new data
call precommit and postcommit hooks when adding files
add "pretemplateupdate" hook

This hook is called before updating a file from the template.
The hook can prevent the updating with a False return value.
comment typo
doc typos and updates

preupdate return is treated as a filename, not an array of filenames
clarify return for postcommit/postupdate
docstring corrections for hooks.hook()

align hooktype names, arguments, and returns with Sphinx docs (and reality)
Update historical sumo.py hooks

Conditionalize postupdate hook and use correct arguments to convert

Switch print statements to logging calls
Expand hooks API documentation even more
add hook template for add-ons
Move all hook scripts into hook-examples
Increase pip install connection timeouts

This is an attempt to reduce the number of errored builds.