Adding HashSet of Live Observalbes

To find out how many Events / Behaviors are created that aren't being
released, register all Observables in a HashSet in Metrics, and remove
them when the Dispose method is called.

Also added a description to the Observable so that external callers can
put a description on the Observables they hold, to differentiate between
those generated by the Sodium library.