[addon closebrackets] Add smart backspace behavior

When any specified pair is empty, backspacing will also
delete the closing bracket.
[closebrackets addon] Simplify backspace-handling code
Add hasFocus method
[placeholder addon] Add
Remove unused variable
Set a default background and color

Closes #1346
[closetag addon] Fix bug in self-closing tags typed directly in front of word

Closes #1349
Remove a debug statement
Don't try to scroll if editor isn't visible
Make sure doc.scrollTop is accurate post-display-update

Closes #1351
Improve closebrackets.js addon

- Do not insert closing bracket if a spacechar or closing bracket
  follows cursor
- Do not handle backspace if selection is not empty
- Do not overwrite anything if selection is not empty
- If selection is not empty and open bracket is inserted - surround
  selection with brackets.
Revise patch 50621941b536805b2c62cb0fb5e1bc8a98e8877d

The previous solution broke test doc_docKeepsScroll.
[placeholder addon] Fix corner case
Revert "Make the default by-word movement stop at word boundaries, rather than word end"

This reverts commit dd919a2bcf93a59b2ab28aa766c50fe6e5d9d239.
By-word movement change, take 2: count groups of punctuation as words

Adds goGroupLeft/Right, delGroupLeft/Right as alternative to word-based
motion/deletion. Binds ctrl-left/right/del/backspace to these commands.

Also makes word and group-based motion stop at line boundaries.
Add tests for by-group motion
Add a removed property to the info passed to change event handlers

Issue #1358
Add test for change.removed property
Pass change event to line handle's change handlers
Make sure change objects passed to doc and line objs also have removed prop