Small cleanups in src/compiler/x86[-64]/insts.lisp.

On both platforms, remove a redundant instruction format definition:
TWO-BYTES was defined twice, identically. (The repetition seems not
to have done any harm.)

Break overly long lines and, on x86-64, update a comment.
Fix assembly of XCHG EAX, EAX on x86-64.

Don't emit the short (accumulator, reg) form of the XCHG instruction
for this combination of arguments as the result is #x90 which is a NOP.
Instead emit the long (reg, reg/mem) form so that the upper 32 bits of
RAX are cleared as specified.
Fix disassembly of XCHG RAX, R8 on x86-64.

Also fix the corresponding 32- and 16-bit versions.

The three combinations of the XCHG instruction with these specific
register operands were wrongly disassembled as NOP as their encoding
uses the opcode #x90 (with a REX and possibly the #x66 prefix) which the
printer of the NOP instruction matches. (The 8-bit version was already
disassembled correctly as it uses a different opcode.)

Add a new instruction format and two new prefilters to the disassembler
and add a printer clause to the XCHG instruction definition to precisely
distinguish between occurrences of the #x90 opcode that are NOPs and
that are XCHGs.

Note that both #x48 #x90 (XCHG RAX, RAX) and #x66 #x90 (XCHG AX, AX)
continue to disassemble as NOP. This seems sensible as the processor
treats any instruction with opcode #x90 as a true NOP if it exchanges
RAX (or the lower 32 or 16 bits of it) with itself (this is explicitly
stated in the processor's manual), and as the assembler already
generates #x66 #x90 when asked for a two-byte NOP.