Has 2 failing specs...
There are still some issue with this code's interaction with the undo
system. The tab stops will need to be or destroyed when certain
changes are undone or redone.
Previously, we parsed snippet bodies line at a time, then determined
tab stops within lines. But this disallows tab stops with placeholder
text that spans multiple lines. Now the parser produces a simpler
structure that breaks the body into an array of strings and tab stops.
Newlines are represented directly as characters within the strings.
We now look at the `core.disabledPackages` config key. Rename the `src/extensions` directory to `src/packages`. The config object now talks about loading packages instead of extensions.