[Configure] make --no-optimize and --no-debug work

These options are mentioned in the --help output but do not work
implement (de)serializing of Array[uint]
Mark a couple more ops noinline.

They are the kind that the optimizer should be killing off anyway.
Specialize getlexperinvtype_o when possible.
allow pointer math using CPointer repr

This means that NativeCall's OpaquePointer type can be gistified as
OpaquePointer<0x7f9e8db8fda0>, which will be helpful for debugging
when making bindings to C libraries. This also allows us to do basic
pointer arithmethic so that we can iterate over the bytes of a CStr
by incrementing the memory address.
fix typo in CArray.elems error message
[nativecall.c] add a cast to get rid of a warning
Fix merging of inline table entries.

Need to add offsets to return address deopt location, locals, and
lexicals.
Improve deopt debug fprintfs.
Rename to ensure it's clear guards relate to args.

This will contrast them with log-based guards.
Keep a table of added log-based guards.

Not updated with usages or used for anything yet; just initialized.
Copy log guard when computing dependent facts.
Add simple guard use analysis

Not perfect, but an over-approximation, to start with: if we ever ask
for the fact, then consider it used.
Remember to copy log_guard with facts.
Eliminate unused guards.
Update uthash to latest version
Correct computation of lexical vivifications.

The original code relied on the now-fixed bug with merging inline
tables.
MVM_nativecall_cast added

MVM_nativecall_cast has been added which provides casting an
OpaquePointer to any type we want. It makes us able to unpack things
conditionally.
fix bogus declaration (copy&pasto)
add box target parameter to nativecallcast

This op now gets a param that says something about the bit size we are
going to read, and also the type we wanna box into. The latter will be
either of Int/Num/Str, when the former is int8/int16/...