Add support and docs for adding columns to datagrids.

This brings over the new DataGridColumnsHook into the
reviewboard.extensions.hooks namespace, and introduces a specialization
for the dashboard called DashboardColumnsHook.

There's also docs covering how to use these new hooks, along with
examples.
Clarify DashboardColumnsHook behavior in DataGridColumnsHook docs.

This makes it more clear that columns added using DashboardColumnsHook
will only be added to the dashboard's datagrid, and not any others.
Fix possible duplication issues with ReviewRequestField registration.

ReviewRequestFieldSet has a global list for storing any registered
fields. If a subclass didn't override that list, then it would share the
list of fields with any other subclass that didn't override it, leading
to problems.

We now use the pattern that the My Account page uses, where we default
the list to None, and then we specifically set it to an empty list on
the subclass during fieldset registration, if it's unset.
Handle alternate null filename for cvs.

'cvs diff' usually uses '/dev/null' for the name of old files, but on Windows
it can return 'nul:'. Check for this as well. Trivial change.

Fixes bug 2294.