howling mad ui refactoring

refactored editing api to use boundaries
created formatting module that exposes format() and style() methods
fixed tests
added documentation
We don't need to return the range that we're mutating.
It would be ideal to actually not mutate the given range itself, but to return a new range. But since we don't do that, I would prefer that the function didn't "suggest" it.