De-obfuscate DEFINE-INSTRUCTION-FORMAT.

Previously if two unrelated formats had same-named args in the same positions,
specifying {prefilter,labeler,printer} as lambda expressions could clobber
one or the other format, e.g.
  (define-instruction-format (foo 8)
    (bits :field (byte 2 2) :printer (lambda (a b c) (something a b c))))
  (define-instruction-format (bar 8)
    (bits :field (byte 2 2) :printer (lambda (a b c) (otherthing a b c))))
produced two DEFPARAMETERs for the same symbol:
 (DEFPARAMETER *BITS-0-PRINTER-WRAPPER* (LAMBDA (A B C) ...))
These are now named not to collide in most cases.

Incompatible changes- :INCLUDE is parsed by the macroexpander and not
evaluated. Access functions for bits of a dchunk are generated only if
requested via a :READER option, and they appear in the target core.

Also fixed DEFINE-ARG-TYPE not to accept a :VALUE, on account of that
not being propagated by SET-ARG-FROM-TYPE, which seemed correct;
and DEFTYPE FILTERED-VALUE-INDEX was off by 1.
Make the disassembler's :USING clause work as intended
Remove some unnecessary package prefixes
sxhash on LAYOUT objects can use the CLOS-HASH slot

... dunno yet if it actually makes a difference in my use case's
timings
Simplify sb-int:encapsulate.

Instead of using special variables sb-int:basic-definition and
sb-int:arg-list, call the wrapper function with the original function
and its arguments as arguments.
Smaller and more correct moving of single-floats on x86-64.

In the VOPs MAKE-SINGLE-FLOAT, MOVE-FROM-SINGLE, MOVE-TO-SINGLE-REG and
SINGLE-FLOAT-BITS the MOVD instruction is used to move data between an
XMM and a general-purpose register. Use the 32-bit instead of the 64-bit
form of the instruction there which often allows to spare the REX
prefix.

MAKE-SINGLE-FLOAT actually becomes more correct with this change: When
given a negative argument it used to set bits 32-63 of the destination
XMM register to 1, breaking the invariant that unused parts of XMM
registers should be zero.

The users of MAKE-SINGLE-FLOAT internal to SBCL happen to avoid being
negatively affected by this. One is SINGLE-FLOAT-FROM-BITS (used to
float bignums) which doesn't use the VOP but the function with the same
name which returns the float as a tagged number in a general-purpose
register, thus taking the XMM register out of the equation. The second
is RANDOM, which uses the VOP but never passes it a negative number.

Nevertheless, using the result of MAKE-SINGLE-FLOAT in a complex
single-float operation can make the 1 bits visible: as a QNaN in the
imaginary part.

In the VOP MAKE-SINGLE-FLOAT there is another 64-bit MOVD, not from a
general-purpose register to an XMM register, but from the signed-stack.
For the same correctness reason this also needs to be converted to move
only 32 bits, so use MOVSS there. (I couldn't test this change as I
found no way to make the compiler use this VOP with TNs of the
combination of storage classes needed to select this specific clause.)

Correct the comment at the top of the file for 64-bitness.

Add a test for MAKE-SINGLE-FLOAT and convert the test file's encoding to
UTF-8 while at it.
Minor fix to DEFINE-ARG-TYPE when editing/reloading definitions.
compiler/disassem: Fix build on some build hosts.

  * The use of WITH-SLOTS on a structure slot named POSITION
causes a build failure when building from SBCL 1.0.28.

  * Krystof tells me that the use of WITH-SLOTS on structures
isn't portable ANYWAY.

  * Fix, by rewriting the offending code to use the structure slot
accessors explicitly.
Restore building on x86-64 when N-FIXNUM-TAG-BITS > 1.

Since commit 6794373d588cef4333fbbb9d04b931ae0a414a7f the build breaks
under this condition when compiling the VOP FIXNUMP/SIGNED-BYTE-64 in
src/compiler/x86-64/type-vops.lisp:

caught WARNING:
  The variable EAX is defined but never used.

Fix this by actually using the declared temporary. While at it, don't
force the temporary into RAX any longer as that offers no advantage over
using any of the other registers (specifically, none of the machine
instructions used in the VOP have a shorter encoding when using RAX).
Better error when LOADing a directory.

Check that the stream does not belong to a directory before reading
anything from it and getting confused.

Fixes lp#1077996.
Fix regression of TYPE-INFO-VALIDATE-FUNCTION.

The INFO transforms of revision 19088e27 silently made the
sanity test a no-op due to a stray apostrophe and no assertions.
Disassembler enhancement- labeler may return a label or not.

With this change, the x86-64 disassembler will label some
local functions, as a minimal example:
 (disassemble '(lambda () (catch :fail (fresh-line)) nil))
A batch of globaldb changes.

* Eliminate verbiage from and improve hygiene of DEFINE-INFO-TYPE.
  The :DEFAULT option, if a function, is called to produce
  a default. If not a function, it is treated as literal data.

* All values placed into globaldb are type-checked.
  Reading a value incurs no type-check.

* A list of proclaimed declarations for SB-CLTL2 is maintained
  without reference to info environments.

* :xc-constant-value is no longer handled through globaldb.
Respect *DEBUG-PRINT-VARIABLE-ALIST* when printing args in PRINT-FRAME-CALL

PRINT-FRAME-CALL used to bind *PRINT-LENGTH* and *PRINT-LEVEL* while
printing function names and arguments. These variables are now only
bound while printing function names to
allow *DEBUG-PRINT-VARIABLE-ALIST* control over printing arguments.

Fixes lp#1261646.
Give CLEAR-INFO unsurprising behavior in a dumped & restored core.

This fixes a bug mentioned in email to sbcl-devel ca. 9/11/2013
("Globaldb screwyness because of purify").
Remove constructor slot from structure-classoid.

Apparently, it was never used.
Change (setf (info ...) nil) to CLEAR-INFO in a few places
Implement structure accessors without closures.

Although closures save a lot of space, having the common
(find x sequence :key #'structure-slot) be slower than
(find x sequence :key (lambda (x) (structure-slot x)))
is neither easily discoverable, nor is a desirable way to write code.

Predicate and copier functions are also changed similarly.

This also fixes the problem of (setf (documentation accessor-closure
t) ...) clobber all other documentation set up in that way.

And another positive side effect,
(defun x-a (x) y) (defstruct x a)
didn't signal a redefinition of X-A warning, now it does signal it.

Closes lp#1264924.
Remove sb-kernel::protect-cl.

It's no longer used.
INVOKE-RESTART-INTERACTIVELY behaves like INVOKE-RESTART w.r.t. test-function

* INVOKE-RESTART-INTERACTIVELY no longer consults the restart's
  test-function when called with a RESTART instance, fixing interactive
  invocation of restarts with test-functions e.g. from the debugger.

* Tests have been added in tests/condition.impure.lisp.

* Note that this change amends commit 69e6aef which fixed bug 774410
  with the following change to INVOKE-RESTART:

  > INVOKE-RESTART is also affected by the changes for bug
  > 774410. However, it does not respect restart test functions when
  > called with a RESTART instance (This is underspecified in CLHS and
  > other implementations behave in various ways. However, behaving
  > differently would make some restarts un-invokable).

  commit 69e6aef should have changed INVOKE-RESTART-INTERACTIVELY in the
  same way.

Reported-by: Vivitron in #sbcl