Fix #86, #87: broken refresh buttons.

Clicking the refresh icon would yield the wrong element ID. This moves
the refresh icon from a separate element to the button container, so the
icon is the button as opposed to being contained within it.
Fix updating all widgets twice.

The single click handler intercepts all the refresh buttons, including
the main button.
Loop through all widgets in dashboard.getAll().

Instead of explicitly calling individual refresh functions, which causes
some amount of duplication, simply loop through all of them, making sure
not to call getAll() recursively.
Merge pull request #93 from commonquail/js

Simplify dashboard.getAll()
Merge pull request #92 from commonquail/refresh-button

Fix broken refresh buttons