Add simple addresses.
Add compound addresses.

They aren't too well tested.
Fix a bug in addr_test.go and in reverse line addresses.

The test framework was bugged: if we wanted 0,0 and no error, we accepted any error.
This hid a bug in reverse line addresses.
This change fixes both bugs.
Explicitly store the reverse bit of regular expression addresses.

We still use the delimiter to determine whether the initial regexp is reversed.
But we store the reverse bit in a struct field, which is easy to toggle.
Much easier than toggling the delimiter, particularly because ? is an re1 metacharacter.
Use simpler line address logic inspired by Acme.

It's not much simpler, but I feel like it's more straight forward in the edge cases.
It's also a tiny bit shorter.
Make all Addresses additive.

This removes the AdditiveAddress type; there's no need for it.
I created it to enforce that , and ; take precidence over + and -.
That's how sam's address parsing works.
With AdditiveAddress it's impossible to write an address like (a1,a2)+a3,
which sam's address parser would never generate (it has no parens).
It's redundant to write (a1,a2)+a3, since it's just a2+a3.
But it's clear how to compute such an address,
and it's no less redundant than a1,a2,a3, which sam will parse just fine.
So, let's just handle it and remove the extra type.

SimpleAddress, however, stays.
SimpleAddress adds additional functionality: reverse().
It's not obvious how to reverse a , or ; address,
so keeping the SimpleAddress type elides the entire issue.
Merge pull request #24 from eaburns/addrs

Start the edit package by adding addresses.