Rune - Stabilization (constructors, destructors), misc.
* Stabilize the constructor and destructor call algorithm and fix a bug
where we were improperly diving SCOPE_LVALUE declarations. Mostly
in GenCallContentGroup() and RunCallContentGroup().
* Fix bugs in the Gen*ContentGroup() that was not handling SCOPE_UNLOCKED
properly. Document the cases to reduce future confusion (this is complex
stuff).
* Fix missing BEStackData in GeneratePushTmpDefaultContext().
* Run constructors after sub-constructors, run destructors before
sub-destructors.
* Clarify how partial assignments (e.g. Fubar futz = (x:23); ) are handled
verses complete replacements. Constructors are still run for partial
initializations, whereas with a complete replacement constructors on the
target should not be run because they've already been run on the source.
* No longer run constructors on persist mappings that have already been
initialized. This is for consistency but also because trying to separate
out the constructor and type-default initialization to handle the case
I originally desired got too messy.
* Fix a bug in the resolver where declarations were being added to the
various SemGroup->sg_*Base lists too late, preventing important type
flags from getting set in certain reentrant situations.
* Move libdthread/refstor.c to libruntime which is where it really belongs.
* Start fleshing out and documenting the core class hierarchy.
* Continue to flesh out stdio, including full duplex streaming support.