MinMax: don't enforce server-side

So that markup is rendered exactly as requested
(and so the tests pass).
require: add accidentally'ed require(fs)
refactor: move shapeName into classes
Drag: move marker creation code into Drag class

* Expand drag_to_create.js to work with Rectangles.
   * have it deal with negative height / width.
* Move more functionality into the shape classes themselves
* Ensure that setCoords() gets called after position changes.
   * So that resize controls line up right.
* Alter _limitSize so it can deal with negative height / width.
Drag: remove 'select' mode

Selection is now enabled everywhere.