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 when validating, so it should be disallowed at schema construction.