Don't allow construction of dict/object schemas with duplicate keys

Inadvertently creating a schema with both Required and Optional versions
of the same key creates indeterminate behaviour, so disallow.