Introduce a Reflect template class that defines a Super member type
Change all Items to inherit their base indirectly through Reflect<>
Change the global alias of Core::Reflect<> from Reflect to Super

This makes the purpose of the template more visible and explicit
Add CastExpression constructor with CastKind (Fix undefined symbol)
Add DeleteExpression to allOOModelNodes