A wrapper around a Var containing state that keeps track of the current
object being dragged. This has to be global because it is easy for something
that is being dragged to not be under the mouse, so the mouse-move events
have to come from the global window.
When the state is non-None, mouse move events get their position sent to the
observer. On mouse-up or when the mouse leaves the parent svg, the drag-end
handler is called and the state is reset to be None.