Added AssertThrowsFdbErrorAsync test help to emulate Assert.Throw<..> with async code
Started revamping the Future callback registration [WiP]

- Only a single static callback handler (remove a callback allocation and gchandle per future)
- All pending futures are stored in a global concurrent dictionary (could allow for mass cancellation)
- Unique key per future, passed as the IntPtr parameter of the callback
Replaced FdbTransaction.Rollback() with Cancel()

- calls fdb_transaction_cancel (nstead of destroying the transaction handle
- attempting to commit a cancelled transaction throws error TransactionCancelled
- if cancel() is called while committing, the commit task is aborted
- added unit tests
Fixed tuple serialization of TimeSpan
Removed FdbSubspace.Pack(Slice) override

- conflicts with Pack<T>(key) if item is an ASCII string or byte array
- creates invalid tuples if the slice is arbitrary binary