Add a draft specification.

Already I'm seeing ways the design might be simpler.

Also, I might have screwed up the spec; I need to review it carefully.