counter support: part 1

Re-use some of the declarative semantics of options for counters

I'm still trying to figure out how to store the metadata.  Right now, we
do some semi-clowny stuff with options (e.g., implementing the
    descriptor protocol) that makes it difficult to interact with them
in a reflective way.

Ultimately, the big TODO: is how to plumb this into vfb303.py's counter
APIs.