I'm pretty confident that this change does what it is intended to do
(fix 592 and some inconsistencies along the way).

But as I had to figure out some pretty old code and some of the
architecture and dependencies in zope.app.form.browser, I might have
made a mistake, although I supplied tests and changed the existing tests
according to my view of the world.