Implemented new in-canvas view buttons

**Note**: To make review process easier, I have embedded notes in the final code changes for most of the files. Please avoid looking through intermediate commits as some of the changes were later removed. Thanks in advance for reviewing!

Background
-----

This pull request brings enhancements to the view manipulation buttons (on the top-right corner of the canvas). The improvements include:

1. **Context sensitivity.** These view manipulators are now 'context aware'. In ```node view``` these buttons affect the current workspace graph; in ```geometry view``` they manipulate the background geometry preview.

2. **New rotate button.** There is now a new ```Rotate``` button when ```geometry view``` is activated. It allows mice with single button to rotate the view with ease.

3. These view manipulators are now built into the workspace view XAML file instead of created in code-behind.

Test scenarios
-----

The following scenarios are exercising the code changes, and should therefore be tested. Note that when ```view operations``` are referred to, it means ```fit view```, ```zoom-in```, ```zoom-out```, ```pan``` and ```rotate``` operations.

1. Connecting from a port of a node to another port on the same node should cancel the connection state
2. View operations should work through short-cut keys (e.g. ```CTRL+P``` to activate Pan)
3. View operations should work through menu items
4. Both ```pan``` and ```rotate``` operations can be turned off by pressing ```ESCAPE``` key
5. Double-clicking should create a code block node with focus on it
6. Window/cross selection box can be created by dragging of mouse cursor in ```node view```
7. Visualization manager should not highlight/unhighlight geometry during window/cross selection
8. Single/multiple node dragging should work as expected
9. Fit view with and without node selection should work as expected
10. Zooming beyond the allowed range (```0.1x``` to ```4.0x```) should disable menu items accordingly
11. Cursor should change accordingly when mouse hovers over the view manipulators
12. Pan/rotate cursors should stay active in successive left-clicks when pan/rotate mode is turned on

Know issues
-----

There are still some view manipulating codes that are incorrectly structured, I have created a separate task for tracking this:

[MAGN-3775 Clean-up zoom related operations in DynamoViewModel](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-3775)

@ikeough 
@pboyer