Drag: add basics of dragging math / events

The tricky (e.offsetX = undefined ? e.offsetX : e.layerX) is to deal
with cross-browser issues.
Drag: actually draw shapes (only circles)