TrackingLineColumn no longer relies on WeakReference

Profiling showed that the use of WeakReference to make
TrackingLineColumn implicitly disposable was a significant source of
perf in macro playback scenarios.  I switched the code to instead
enforce that Close is always called on items and removed the use of
WeakReference.  Data is now stored in the ITextBuffer property bag.

This also nicely found a bug where Close wasn't being properly called on
TrackingLineColumn through an ITrackingVisualSpan wrapper.

Should write some more tests here this weekend.  This helps with the
scenarios described in #1049.  Still more work to d othere though.