Cleanup
Simplified db.Attempt logic

- Removed all the <T1, T2, T3,.. > overrides, replaced with versions that optionally pass the CancellationToken or the FdbOperationContext
- Removed the non-async Read(Action<..>) because all read methods are async, and we don't want people calling .Wait() on tasks anyway
- FdbOperationContext.Execute(..) takes in a Delegate and will check the signature at runtime. No need to wraps handlers anymore.
- Removed Snapshot mode for ReadOnly transactions. Use can access 'tr.Snapshot...' if he wants to.
- By default doesn't try to commit readonly transactions, unless context.CommitReadOnlyTransactions is set to true. Rread/write transactions are always committed.
Made FdbTransaction sealed + moved Snapshot logic into another file

- FdbTransaction.Snapshot.cs
Misc

- ToArrayAsync on FdbRangeQuery
- forgot to move FdbTransaction.m_snapshotted
- typo in comment
Added prototype of FdbDatabase.Bulk API

- db.Bulk.InsertAsync(IEnumerable<...>) to insert large sequences of keys, that would not fit in a single transaction
- split the sequence in chunks (by length or byte size)
- write each chunk with its own transaction
- handle retrying (by calling db.Attempt)
- currently only one worker, could be made concurrent
Fixed invalid comment in unit test