Removed SuspendDisposal

The purpose of SuspendDisposal was to create an space where you are sure
the object (WeakNeedle or LazyDisposableNeedle) will not be disposed.
DisposedConditional provides this for the client, so SuspendDisposal was
only used internally, removing it reduces the pressure on the Garbage
Collector because it means less short-lived objects created (where they
are not really needed as it can be optimized since they were only used
internally).
CacheNeedle's _initializerThread is NonSerialized

- The thread should not be serialized
- Decided against finalizer
- Also, That TODO is done.
Better control for creating and death of needles

- This fixes dead needles in the write log of the transaction
- This is not a definitive fix, other problems remain