Refactor to have list of root objects rather than a parent of root object

@csfrancis for review

This avoids having the parent root object with address 0.  Instead, a list of root objects are stored, and checks were changed to use is_root_object rather than checking for this parent root object.