gitignore "example" binary
Rewrite AutomaticOptions to not use httptest

httptest was adding an extra flag, which was sort of ugly. Instead,
reimplement the parts of its functionality we were using. Bonus: due to
specialization, it's now a bit more efficient as well!
Options middleware tests

They're really verbose. I should probably DRY them up later.
Remove key length sanity checking

Previously, we disallowed setting the empty string as a key in a map,
since at the time it seemed like doing so would allow all sorts of
unsavory bugs. In practice, I think this probably isn't actually true,
as I wasn't able to think of a scenario in which this bug would
materialize during the several moments I thought about it.

Plus, the code here to do sanity checking was wrong anyways.
I spel reel gud
Return typed errors in param

Instead of returning awkward untyped error strings, return real error
structs. This will allow users of the library to extract interesting
semantic meaning from our errors, and is just all around less awful than
what we had before.