Retain reference properties in compounds
Retain reference properties in compounds

Compounds can't always be traced into (e.g., when they're held in a
native C++ container).  Thus, if those compounds have reference
properties, the things refered to may never get traced into and may be
freed unintentionally, which is very bad news.

This commit fixes the situation by using a new smart pointer class
(RoguePtr) to hold references in compounds.  It automatically increments
and decrements the ref count for whatever it refers to, so essentially
anything it holds becomes a GC root.

Note that this means we may be able to simplify the tracer a bit since I
think we may now never need to trace into compounds.

Plasmaworks/Rogue,AbePralle/Rogue,Plasmaworks/Rogue,AbePralle/Rogue,Plasmaworks/Rogue,Plasmaworks/Rogue