Dashboard: Allowing users to rearrange dashboard widgets

Added drag-and-drop to the widgets in the UI, made them all the same size, and
created a way to store the layout in the user's preferences so that when they
revisit the dashboard, it's the same layout.