Add support for checkbox columns to the datagrid.

This introduces CheckboxColumn, which can be used by a datagrid to
handle multiple selection of entries. It will display a checkbox for
every row, as well as a checkbox in the header that, when clicked, will
toggle selection of all the checkboxes in each row.

This is based heavily on on Graeme Coupar's work on
https://reviews.reviewboard.org/r/3796/
Allow the datagrid body to scroll without scrolling the header.

This does some heavy surgery to Datagrid's handling of the table header.
Tables aren't able to scroll only their body. All thead tags will scroll
along with it. My goal was to allow the body to be scrolled without the
header, in order to create a nicer experience with large numbers of
rows.

To make this work, we create two tables: One for the header, one for the
body. We pull out a copy of the header from the original body and place
it in the header table. We then do some work to synchronize all the
widths and to ensure that we don't lose their natural widths.

The details are in the comments in the code, but the end result is that
the table acts as it did across all major browsers, with the difference
being that the body is scrollable.

Now to make it scrollable, a height must be assigned to the datagrid
element, and resizeToFit must be called on resize (after appropriately
sizing the datagrid). The datagrid will then do the rest.