Delete incorrect test attributable to lp#770184.

All this test proved is that internal inconsistencies exist.
`(,@X) means (APPEND X) regardless of X's value, even if an atom.
`(,@1) is 1, and likewise `(1 ,@2) is (APPEND '(1) 2) => (1 . 2).
Since (LET ((X 1)) `(,@X)) and `(,@'1) both produce 1,
suspicion ought to have been cast on this test case.

The crash was indeed a problem, with a proper fix pending.
Optimize array type tests.

By better grouping of widetags,
simple-{array vectors strings} complex-{strings vector array},
type tests for strings, simple-strings, vectors, simple-vectors, etc.
can be done with just one range comparison.
Optimize (coerce x 'function).

Use the otherwise unused COERCE-TO-FUN function.
Change MAP-RESTART to only accept functions.

It's an internal function and it's only ever called with functions, no
need to coerce names to functions.
Fix a type in package-data-list.
Fix a backquote reading error within sharp-dot.

Also remove (unrelated) gratuitous binding and declaration.
Don't say "macro" in an error message about special operators.
Optimize (coerce x 'list).

Transform into a call to COERCE-TO-LIST.
Optimize (array character (*)) type test.

Group SIMPLE-CHARACTER-STRING-WIDETAG and
COMPLEX-CHARACTER-STRING-WIDETAG together.