Parse DEFSTRUCT more strictly.

Previously we disallowed repetition of :INCLUDE, but nothing else.
Now nothing is repeatable except :CONSTRUCTOR and :NAMED.

Also we accepted (DEFSTRUCT (FOO (:TYPE LIST) :PREDICATE) X) which isn't
right because the atomic form of :PREDICATE in the usual usage means that
a predicate is wanted, and the general remark in CLHS that option :<atom>
means the same as (:<atom>) applies, and (:predicate) is clearly defined
to mean that a predicate is requested with a default name of <NAME>-P.
This seemed incontrovertible, but I checked several other Lisps and found
that they allow that usage but do not define the predicate, exactly as SBCL.
Our excuse, so it seemed, was that TYPED-PREDICATE-DEFINITIONS had to guard
a defun with (AND PREDICATE-NAME (DD-NAMED DEFSTRUCT)) because we always
assigned a PREDICATE-NAME into the DD on creation, even if it would later
be set to NIL or changed. This was sloppy because it meant that macroexpansion
of a DEFSTRUCT would intern bogus symbols, and that an alternate-metaclass
struct falsely indicated in its DD that it had both a predicate and copier
when it has neither typically. There remains no reason for such slop.