Implemented zoom to fit.

- Added zoomToFitAllRects to BoardZoomer. Finds the enclosing bounds, calculates the new translation and scale, applies them, updates the zoom behavior to prevent skipping around the next time the user zooms.
- Now storing the zoom behavior on BoardZoomer so that it can be updated later.
- Added Zoom to Fit button and handler.
- Cut board height down to 768.
Use tweening when zooming to fit.
Fixed comment misplacement.
Pulled tweenToNewZoom out of zoomToFitAllRects.
- Now using tweening for lockZoomToDefaultCenterPanAtDataCoords and unlock zoom. 
- Pulled parseScaleAndTranslateFromTransformString from tweenToZoom. Using it to store transform data in parsedPreLockTransform, which replaces preLockZoomTransformSTring.
- Renamed BoardZommer.zoom to syncZoomEventToTransform.
Added widthAndHeightAttrs helper, but not using yet.
Conditionalized appearance of explanation, added link and button to show and hide it.
Darkened board bg a tiny bit to separate it further from the rest of the page.
Updated instructions.
lockZoomToDefaultCenterPanAtDataCoords now centers on the center of the rect, not the corner.
Refactored makeEditable so that the optional params now go in a dict named options.
- Stopped updating the datum directly in makeEditable. Instead, passing the new field value to onSetField and letting it do it.
- onSetField for score on item validates the given field text and only updates if it can be a number.
Made board and page background a little less bright.
Don't show Add Board/Copy Board buttons when the new board dialog is showing.
Set link colors and font-size. Moved new board dialog close button to the right.
Allow user to change properties of board when copying.
- Added optional initPropDict param to copyBoard, which sets those props on the board var that is copied.
- Added copyBoardDialog template. When Copy Board is hit, showing it instead of doing the copy. When its Copy button is hit, it takes the form settings and passes them to copyBoard.