common/TrackedOp: use explicit ref count, intrusive_ptr
This is more efficient and more explicit than shared_ptr. It will also
allow us to put these in intrusive lists.
Note that before we used the shared_ptr OnDelete property only for the
live ops and left it off for the history. Here we rename is_tracked to
state and explicit note whether we are untracked, live, or history.
Also, now that we #include OpRequest in osd_types.h, we have to include
the .cc file (and ~OpRequest definition) in libcommon to avoid a link
error on all the unit tests etc.