Made HeapThing not be templated.  Instead, final types must inherit from TypedHeapThing<HeapType> to expose an internal ::Type definition.