This is a squash and merge of a large set of changes by @BeksOmega
* Added functionality to scrolling, dragging, and zooming.
* Fixed incorrect changes to workspaceChanged function.
* Fixed comment.
* Fixed typo.
* Removed scrollbar.set calls from workspace_svg.
* Removed scrollbar.resize() call.
* Added move options to playground.
* Fixed scroll_ calls that replaced scrollbar.set calls.
* Removed this.scrollbar checks.
* Changed zoom so that it always zooms towards the coordinates. Changed isContentBounded_ to be separate from isMovable_ (b/c of the previous change zoomControls had to be added to the bounded check). Fixed scroll_() calls... again.
* Changed procedures so the Highlight definition option is only available if the workspace is moveable.
* Fixed scrollCenter so that it works with flyout toolboxes.
* Fixed zoomToFit so that it works with horizontal flyout toolboxes.
* Fixed Typo.
* Fixed bumping blocks when the workspace is not movable.
* Fixed bumping not working with left and top toolbox positions.
* Re-Added not allowing scrollCenter if the workspace is not movable. Disabled scrollCenter button for this case.
* Cleaned up formatting.
* Fixed bumping... again. Reformatted workspaceChanged a bit.
* Changed blocks to be completely bumped into the workspace.
* Reorganized metrics-getting for workspaceChanged.
* Added bumping workspace comments. Moved event checking.
* Renamed workspaceChanged to bumpObjects.
* Added a bumpObjects developer reminder.
* Added warning to zoomToFit.
* Cleaned up some text.
* Added better inline documentation.
* Fixed up inline docs.
* Cleaned up comments.
* Fixed zoomCenter not actually zooming towards the center.
* Fixed zoomControls error on unmovable bottom-toolbox workspaces
* Fixed programatically placing blocks in an unmovable workspace.
* Removed unnecessary translate call in inject.
* Reversed removal of translate. (apparently it was necessary)
* Cleaned up code in response to first round of reviews.
* Added unit comments to the zoom function.
* Removed bumpObjectsEventChecker. Added BUMP_EVENTS list to Blockly.Events.
* Changed getWorkspaceObjectMetrics call to getBoundingRectangle().
* Fixed utils.mouseToSvg (was causing problems with zoom on wheel if the page was scrolled).
* Fixed zoom when page is scrolled (actually this time). Reverted changes to utils.mouseToSvg.
* Fixed centerOnBlock.
* Added unit docs to translate. Moved setting the grid position to the translate function.
* Added TODO's.
* Add block drag surface translateSurfaceBy
* Add dragged connection manager
* Add gesture.js
* Add GestureHandler
* Implemented gesture skeleton
* Most basic workspace dragging
* Add dragged connection manager
* cleanup
* doc
* more cleanup
* Add gesture handler
* Add translateSurfaceInternal
* core/block_dragger.js
* cleanup
* Pull in changes to dragged connection manager
* Pull in changes to dragged connection manager
* comments
* more annotations
* Add workspace dragger
* Add coordinate annotations
* Start on block dragging
* Limit number of concurrent gestures
* Add some TODOs
* start using dragged connection manager
* Set origin correctly for dragging blocks
* Connect or delete at the end of a block drag.
* cleanup
* handle field clicks and block + workspace right-clicks
* move code into BlockDragger class, but still reach into Gesture internals a lot
* Clean up block dragger
* Call blockDragger constructor with correct arguments
* Enable block dragging in a mutator workspace
* Add workspace dragger
* click todos
* Drag flyout with background
* more dragging from flyout
* nit
* fix dragging from flyouts
* Remove unused code and rename gestureHandler to gestureDB
* Rename gesture handler
* Added some jsdoc in gesture.js
* Update some docs
* Move some code to block_svg and clean up code
* Lots of coordinate annotations
* Fix block dragging when zoomed.
* Remove built files from branch
* More dragging work (#1026)
-- Drag bubbles while dragging blocks
-- Use bindEventWithChecks to work in touch on Android. Not tested anywhere else yet.
-- Handle dragging blocks while zoomed
-- Handle dragging blocks in mutators
-- Handle right-clicks (I hope)
-- Removed lots of unused code
* More dragging work (#1048)
- Removed gestureDB
- Removing uses of terminateDrag
- Cleaned up disposal code
* Dragging bugfixes (#1058)
- Get rid of flyout.dragMode_ and blockly.dragMode_
- Make drags from the flyout start from the top block in the group
- Block tooltips from being scheduled or shown during gestures
- Don't resize mutator bubbles mid-drag
* Fix events in new dragging (#1060)
* rebuild for testing
* unbuild
* Fix events
* rebuild
* Fix up cursors
* Use language files from develop
* Remove handled TODOS
* attempt to fix IE rerendering bug, and recalculate workspace positions on scroll
* Rebuild all the things
* Comment cleanup; annotations; delete unused variables.