template<typename T>
handle class
wraps around a resource for sharing and management purposes.
resource handles are used to manage the lifetime of resources, and tracking dependencies (i.e. who uses what). It is supposed to be used with a core::