Auto edits

Auto edits are the new way to support users while typing (and therefore replace the existing auto edit strategies (subtypes of `IAutoEditStrategy`) borrowed from Eclipse). This work is mostly finished and I would like to get review for it to see if it works for others and not just for me.

New key features are:
- Support for Eclipse' linked mode model
- Auto expand templates by pressing <kbd>tab</kbd> (the auto edit is named `ApplyTemplate`)
- Auto close curly braces to surround a single expression (the auto edit is named `SurroundBlock`)
- Easier way to enable/disable auto edits due to a new configuration page

Todos:
- [ ] More Scaladoc for the API needs to be written
- [ ] The table in the preference page doesn't grow correctly (scroll bar missing)
- [ ] Lost functionality: Move braces to correct position. Should be reintroduced (and fixed together with [1002133](https://www.assembla.com/spaces/scala-ide/tickets/1002133#/activity/ticket:))
- [ ] when multiple linked models are created (which happens when multiple open parens are typed for example) it is not possible to use the tab key to navigate to "outer" linked models
- [ ] Templates with empty patterns (`${}`) need to be optimized away by the underlying processor, otherwise they can get in the way in special situations

The previous PR with some more info is #770.