Optimize outline view by storing nodes by value instead of as a pointer
We now use std::vector as well so there is no more implicit sharing.
Storing by value in the vector and then comparing pointers only works
because we never resize/reorder any of the vectors after the initial
creation.
REVIEW: 123562