Fix leaking memory:

* Use WeakReference for SelectionMultiple.lastShiftRoot
* Do not use IDisposable, instead use Cleanup method (cause SelectionStrategy is reused when ApplyTemplate is called several times)