* Find roots when running GC
Attempt to address the issue #2773.
The existing implementation had an expensive overhead of managing root
counts, especially for mutable borrow of GcRefCell.
Instead of managing the root counts, this change counts the number of
Gc/WeakGc handles located in Gc heap objects and total number of them.
Then, we can find whether there is a root by comparing those numbers.
* Fix clippy errors
* Keep reference counts in Box
* Addressing comment
* Fix clippy errors
* Fix typo
* non_root_count includes mark bit
* give a space