Delete the ill-conceived thread-struct-slot-offset function.

Thanks to statssats for fixing my totally braindamaged implementation.
This additional change avoids having to scan all thread slots in every
use of the symbol-value vops.
code/late-type: Replace array type unity logic with sane version.

  * Discovered based on a bug report by jasom in #lisp, with
diagnosis by pkhuong, input as to what the right thing is from
Krystof, and patch review by both.

  * Define a bunch of test cases for various cases that should (or
shouldn't) produce a specific simple array type (rather than a
full union-type).

  * Completely gut and rebuild the unity logic, factoring it out
into multiple functions each responsible for a single part of the
array type, and a function to determine if unity makes sense.