Prevent the page from jumping when modifying an issue state.

The introduction of the issue summary table had an annoying problem
where the page would scroll slightly after clicking Fixed, Drop, or
Reopen. The reason is that the matching entry in the table would be
added/removed, and that would affect the scroll offset.

We now work around that by updating the scroll offset after modifying
the table to scroll by the appropriate difference. Users won't see it
jump anymore.
Dynamically reload the dashboard contents without a page refresh.

The dashboard contents are now dynamically loaded every 5 minutes.
We fetch the entire page and just extract the dashboard content
(including sidebar) and replace the current content with it.

We replace the Edit Columns pencil icon with a spinner during reload.

One of the nice advantages to this is that if the server goes down at
all while the client is trying to reload, the worst that happens is they
get an HTTP 404/500/whatever error in the console log/network inspector.
The fetch will be tried again at the next 5 minute mark.

The sidebar count calculations have been moved into the view. It's been
made a bit smarter there. We don't attempt to calculate if we're only
fetching the datagrid (due to reload, reordering of columns, etc.),
cutting down on queries.
Merge branch 'release-1.7.x'