Make disassembler correctly detect multiple code .ENTRY points

If pad bytes were inadvertently decoded as opcodes, they might bump
the PC beyond where the fun-header-widetag is, and so the .entry hook
would fail to trigger, and everything would be wrong until by chance
the decoder could sync to a valid opcode.

And the use of sb!kernel:code-header-ref in 'add-fun-header-hooks'
was insane. SEG-CODE could be NIL, but it "worked" to dereference NIL
as if a code-header and get back NIL by random coincidence.
Assorted PCL sanity improvements

- PRINT-OBJECT on methods was ugly because it could use
  print-unreadable-oject inside print-unreadable-oject
- PRINT-OBJECT on a GF (or any named thing) should show the
  address too if the name is not a proper name for the object.
- PRINT-OBJECT on a cache was totally wrong
- CHECK-GF-LAMBDA-LIST is expressed slightly better
Avoid generic math in INFO-GETHASH
Use one fewer variable in SB-PCL::EMIT-CACHE-LOOKUP

and sprinkle some comments around.
Fix lp#1397454 - invalid PCL ctor optimization.