Make the range checks in loads the same as in FreeBSD's kernel.

This prevents the checks from incorrectly succeeding due to integer
overflow on 32-bit platforms, addressing GitHub issue #379.

It also catches integer overflow in indexed loads when adding the X
register to the offset; that's not necessary for bounds checking, but
we'll put it in anyway.

Also, make the variable "k", and the memory array, unsigned; that's the
way it is in most kernel BPF interpreters, and means we use unsigned
address arithmetic consistently.