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 skeleton for workspace comments
* XML parsing and encoding of workspace comments.
* Minor fix: piping the height and width from xml to newWorkspaceComment
* Move height and width into workspace_comment_svg
* rename newWorkspaceComment to newComment
* minor refactoring. PR changes
* Functions for managing the comment's lifecycle
* Add initial tests
* Add another test
* Add basic rendering of a comment.
* Cleanup remaining highlighting steps from render
* Fix lint
* Fix aslant
* Add basic comment translate
* Simplify render code into one setPath method
* Move steps to setPath_
* Remove svg elements when disposing of a comment; some code cleanup
* Add a workspace comment on context menu click and position it where the initial context menu was clicked.
* Minor rendering changes, fixes RTL. Fix positioning of new (context menu) comments while workspace is scaled.
* PR feedback
* Gesture code for dragging comments
* Add comment (block drag) surface methods
* minor comment fix
* Comment fixes
* Add comment dragger
* Making rendered private
* Require CommentDragger
* Make basic comment dragging work
* Increase the border around the comment to make a bigger drag handle
* Remove typo
* Allow comments to be selected. Highlight selected comment. Only edit comment on click. Updated comment rendering.
* minor refactor: remove commented out code
* PR comments
* lint and rebuild
* Fix renamed function call
* Fix workspace getMetrics by storing comment size as a number, not a string
* Enable comment deletion when dragging over the toolbox or trash can
* Give issue references to some todos
* Create a helper function for workspace comment creation
* Integrate sam's workspace comments, using the bubble dragger
* Remove comment_dragger references
* Remove comment dragger.js
* Remove pointer handling
* Fix lint
* Move comment XML functions into the comment files.
* Fix tests
* Fix type annotations
* Fix comments on comments
* Fix compiler errors related to visibility.
* Fix merge issues and add an issue number to a TODO
* Add a new message for default text on workspace comments, and rebuild
* Add support for a context menu on workspace comment showing delete and duplication options.
Add copy and paste support.
* PR comment feedback
* Show a delete icon on the comment when selected. Delete icon deletes the comment. Comment can be deleted if dragged onto the toolbox or the trash icon. A normal bubble cannot be deleted that way.
* use isDeletable instead
* Support drag of the comment during editing mode using the top handle.
* Add skeletons for all workspace comment events
* Rebuild with new comments
* Get rid of confused TODO
* JSDoc on a function
* Fix broken tests
* More PR feedback
* Fix lint
* Delete comment on mouse out, highlight on mouse down.
* Fix lint.
* Show delete hand cursor when dragging a comment to delete over the toolbox
* Focus textarea on select
* Add delete events
* Remove workspace comment create event, and add TODO placeholder
* Provide default values if comment height and width are missing in XML
* Set comment handle fill to none by default
* Rebuild
* Comment de/serialization should include location.
* Add comment move events, with undo and redo
* Add comment change events
* Move files up to core
* Add package/private annotations wherever possible
* Move the workspace comment events up to core and into a single file
* Mark things package or private where possible
* Get rid of unnecessary changes to messge files
* Fix lint
* Fix some review feedback
* Make changes to the comment db happen in addTopComment and removeTopComment
* Add css classes for toggling comment focus
* Clean up css for comment focus
* Rebuild