The use of std::unique_ptr with TraceCursor adds unnecessary complexity to adding SBTraceCursor bindings
Specifically, since TraceCursor is an abstract class there's no clean
way to provide "deep clone" semantics for TraceCursorUP short of
creating a pure virtual clone() method (afaict).
After discussing with @wallace, we decided there is no strong reason to
favor wrapping TraceCursor with std::unique_ptr over std::shared_ptr, thus this diff
replaces all usages of std::unique_ptr<TraceCursor> with std::shared_ptr<TraceCursor>.
This sets the stage for future diffs to introduce SBTraceCursor
bindings in a more clean fashion.
This diff will be landed after D130924 is landed.