Made changes to cursors and DefaultSubscription to avoid allocations.
- Removed lockObj and just locked on the cursors
- Made Cursor.GetCursors return List<T> so we don't allocate twice.
- Made GetCursorFromEventKeys return List<T> so we don't allocate twice.