Handle formatting in strings transparently

This branch adds some functionality for handling formatting from our blessings-like `Terminal` object in a way which is hopefully nice for the user and useful internally. We introduce a new `StringWithFormatting` object, which tries to emulate a normal string, but with hidden formatting metadata that does not count towards things like string length.

Sadly, the extra object means we need to re-implement some low-level functionality, like word wrapping, to take the new Format objects into account. The algorithmic stuff is probably fairly hideous, but it's unit tested and does the job for now.

I also added an example of how nice makes creating a Text object with formatting statements in it.