Reuse cached UTF8Encodings instead of creating new ones all the time.
removed most of the models for CRUD operations and using positional parameters and Options classes instead.
got rid of IExplainableModel and the Explain method.

Also introduced fluent-interface for find.
added fluent aggregate api.
updated API based on latest CRUD spec changes.
changed return types from IAsyncEnumerable to IAsyncCursor, implying that the result has already been materialized except in the case of $out.
removed IAsyncEnumerable and IAsyncEnumerator.
Removed timeout from high-level api. Fixed up aggregate options for fluent to not require a type definition. Added extra extension methods for FindFluent and AggregateFluent.
Rename IAsyncCursorFactory to IAsyncCursorSource and other minor code review changes.