Rewrote "Add closing braces", closes #357

The code is much better abstracted and the feature works much better overall now - pretty much like in other IDEs, as far as I can tell. It might be worth considering to make it the default - it seems that that's what most IDEs do, at least the ones I've tested (Visual Studio, Eclipse, Sublime Text 2).

Some details:

- When pressing backspace while inside empty braces, both are deleted (#357)
- When typing the closing brace while the caret is inside of empty braces, the caret simply skips to the next char instead of duplicating the closing brace
- (applies only when the opening brace char is the same as the closing brace char, `'` and `"`) When deleting the closing brace of `""` and typing a `"` again, you no longer end up with `"""`, but with `""`
- `{}` is now supported
- smart-indent doesn't mess up the indenation when pressing Enter while inside `{}` anymore
- the braces of string interpolation expression blocks (`${}`) now longer auto-complete, this would be tricky to support without proper highlighting (#367)