Start the edit package by adding addresses.

The `AdditiveAddress` and `SimpleAddress` types enforce precedence on the Plus, Minus, To, and Then operators:
* `SimpleAddresses` can only appear on the RHS of Plus or Minus.
* Addresses resulting from `To` and `Then` cannot be added or subtracted.
I believe that this is consistent with how sam(1) parses address strings.

There are also a few unexported types such as simpleAddr and addAddr which are there only because you cannot add methods to interfaces. I really wanted `Plus`, `Minus`, `To`, and `Then` to be methods. I tried a version where they were functions; it was ugly. I don't like lispy prefix notation: `To(Line(0), End())`. I much prefer `Line(0).To(End())`
On second though, if it's extended to all delimiters (as I questioned above), it's not so strange.
It's really just two simple changes:
1. The delimiter need not be escaped if it appears in a character class. (I was actually surprised that it needed escaping in the first place.)
2. If the delimiter is a meta character, its escaped form is interpreted as meta, not literal. It's literal form is available using a character class.

This deviates from regexp(7), but as I said, re1 already has the `\n` change. And after having though about it more, it all seems quite intuitive, and it will allow sam to hijack `?` for its own devices.

More thoughts?