Dragging: only cancel the mousemove event if we are actually dragging

It's possible that we might be dragging, and mouseover elements that
have valid drag actions (like slider controls). In those situations
it is correct to cancel the event so there is no interaction.

However, if we are NOT dragging and we mouseover those elements the
event should NOT be cancelled. This comes into play when it's possible
to keep dragging even if the mouse has left the area the drag started in.

It would be worthwhile to cancel the drag event in some other situations,
as it causes some UI elements to be highlighted by mistake.
Dragging: Move drag event handlers to the top level template.

Previously the drag event handlers were attached directly to the
hexes template. This worked well for dragging that stayed within
the hexes, but if the mouse wandered or the hexes hadn't loaded
correctly it caused the dragging to be interrupted.

Additionally, the dragging was cancelled whenever the mouse left
the dragged element. There is no reason dragging shouldn't be
allowed to continue when the mouse leaves the element, care simply
needs to be taken with event propagation.