Reduce random casting in looks_like_valid_lisp_pointer_p().
  * The casts are ugly, and obscure the logic.
  * The casts are WRONG on systems with 64-bit pointers and 32-bit
long integers (thanks to akovalenko for pointing this out).
  * We already have utility functions to do most-to-all of what
we're doing with casts.
  * And we never use one of our (lispobj *) parameters as an actual
pointer, we always cast it all over the place instead.
  * So, take a lispobj instead of a (lispobj *), and use utility
functions from runtime.h instead of inline casting and random
pointer arithmetic.