Added some details on hosting on IIS and OWIN
Unit Tests: tweaked FdbTest base class
Added WithReadYourWritesDisable() and WithReadAheadDisable() transaction option helpers, fixed WithNextWriteNoWriteConflictRange() to require a writeable transaction type
Fixed invalid state checks for GetReadVersionAsync() and SetReadVersion(..)

- these methods are allowed on read-only transactions
- it is legal to call GetReadVersionAsync() after CommitAsync()
Slice: added a few BigEndian and 16-bit helper methods
Added a ToString() on the various SafeHandles, and added a #if CAPTURE_STACKTRACE to help troubleshoot transaction and db object leaks
Tuples: UnpackLastWithoutPrefix(...) displays the key and expected prefix in the error message

- helps troubleshooting problems with key selectors
- only in Debug builds for now
AsyncLinq: added various SumAsync(...) LINQ methods that can be used to add together the values of a range read

- Useful for layers that need to count or rank things
Removed unused variables
Updated Newtonsoft.Json to v6.0.2 and Microsoft.Bcl.Immutable to 1.1.20-beta
Make it clear that the .NET bindings are officially supported
Bulk operations: refactor FdbBulkOperations into Fdb.Bulk static class (work in progress)

* Fdb.Bulk.WriteAsync(...) to insert large quantities of k/v into a db
* Fdb.Bulk.ReadBatchedAsync(...) with multiple overrides to be able to read/process large runs of data
Ranked Set Layer: initial port of the python layer (work in progress)

- warning: there is a known bug due to snapshot reads
A few cosmetic fixes
Merge pull request #17 from ajbeamon/master

Make it clear that the .NET bindings are officially supported
Tuple Layer: added support for System.Net.IPAddress in tuples

- Serialized as a byte array to preserve ordering.
- Added converters to also autocast strings, longs or guids into an IPAddress
Table Layer: added a unit test to demonstrate using a custom key encoder
Fdb.Bulk refactoring: renamed "ReadBatchedAsync" into "ForEachAsync" to prevent some misunderstandings into what it does, and added AggregateAsync()

* ForEachAsync is used to run a void-returning, retryable async operation on a source of elements using an adaptive batch size
* AggregateAsync is the same, excepts that it can return a final result
* the state *must* be immutable (ie: longs, readonly structs, or Immutable collections)
Added helper methods on Slice, SliceReader and SliceWriter to work with 16 bit int

- Slice.ToInt16() and Slice.ToUInt16()
- SliceWriter.WriteFixed16() and SliceWriter.WriteVarint16()
- SliceReader.ReadFixed16() and SliceReader.ReadVarint16()
- note: ReadVarint should be refactored to take an expected max number of bits and throw if the value does not fit
Tuples: added FdbTuple.UnpackFirst<T>(...)

- Similar to UnpackLast<T> in that it only does work to decode the first item of a potentially long tuple