Cannot mark sp_arg ops :pure.

Installing the locals still matters, since we may later deopt. May
need something more general, but this avoids the issue for now.
Revert "Mark objects/stables with index in deserialize."

This reverts commit 478542413715c5e5fae2bd0c172371e343a536cb. This is
the commit to blame for the Panda build breakage. Reverting it loses
us a bit of the CORE.setting build time win, but we get to keep most
of it. Can re-instate this later; need to better understand why it
breaks the Panda build.
Merge the bodies of MVM_sc_get_{obj,stable}_sc and *_set_*

The two *_get_* functions call MVM_sc_get_collectable_sc, and the two
*_set_* functions call MVM_sc_set_collectable_sc.

This will avoid future code duplication.
Change serialization context indexes to be unsigned. Use ~0 as a sentinel.

Previously serialization context indexes were stored as signed values, with
-1 as a sentinel, and the check for it being < 0.

Using unsigned values and an explicit check for just ~0 almost doubles the
number of values that are usable for whichever integer storage size is
used.
Add inline functions to wrap accesses to sc.sc_idx and sc.idx

This makes it easy to change the internal representation.
Add struct MVMSerializationIndex to hold large STable indexes.

Continue to store indexes that fit directly in the union, but for larger
values, allocate a struct MVMSerializationIndex, store the indexes there,
and use the union to store a pointer to it.

For now, we don't have overflow checks on values for the global SC index, as
the highest seen value is 149, which is considerably smaller than 65536.

Currently the code leaks all memory allocated. That will be fixed in the next
commit. The handling of STable collection is also LTA, to put it politely.

For now, force 32 and 64 bit platforms to exercise the oversize code paths.
To torture them properly, set the oversize threshold to be 255, not 65535,
and add an extra debugging field to try to catch problems. This code is
intentionally left in for now, to make it easier to debug problems.
Free any allocated MVMSerializationIndex structs.

Update the code that defers the release of STables to understand the use of
MVMSerializationIndex structs.
Remove the debugging code, and the debugging sizes/thresholds.

This is now the intended real code for the 32-bit case.
A probe to determine the pointer size.
Conditionally compile the MVMSerializationIndex for 32 bit platforms only.

On 64 bit platforms a union of two MVMuint32 values is used, as before.
Allocate a MVMSerializationIndex if sc_idx would overflow in the union.
Back out index-setting in deserialize again.

This breaks the Panda build on some platforms.
Specialize getattr_[ins] on P6opaque.
a bigint is big when it does not fit in

On 64bit platforms the DIGIT_BIT is 60, so when we want to store something bigger, we need a
bigint. The condition before this patch was always false.
Optimize object attribute accesses in spesh.
Spesh indirect form of attr ops with known names.
Bug #121273 fixed - losing a 0 from end of exponent

it was removing zeros from the end of a num. FROGGS++
NewLine removed
Merge pull request #99 from sergot/master

Bug #121273 fixed - losing a 0 from end of exponent
don't try to get slot of an NULL attribute name