Implemented internal page linking.

Any links starting with `#/` will be looked up by virtual path.

Fixes bug 2829.
Minimum Django version is 1.4.
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)
Pass possibly modified filename from preupdate->postupdate

If preupdate hook modifies the file that should be updated, pass the modified
file name to the postupdate hook and logging as well as versioncontrol
Update historical sumo.py hooks

Conditionalize postupdate hook based on correct updated pathname being given
(from return of preupdate)

Switch print statements to logging calls