* move handlers for each of the different API versions into different controller methods
* add controller methods for acquire, renew and release
* change structure of Errorable to allow LINQ query syntax
* use Result<TOk, TError> class for error handling in request handler classes, and re-implement Errorable extension methods on Results
* update documentation with PowerShell/curl/wget commands for testing the leasing API
* respond to ErrorCollection PR comments
* add braces around null check throws
* remove Errorable class (replace with Result/ErrorCollection)
* remove static Errorable class, and instead create Result instances using implicit operators
* rename ErrorCollection to ErrorSet, respond to PR comments in Result class
* API version changes in Server project
* suppress messages about implicit operator alternatives
* add documentation comments to API DTOs
* use DateTimeOffset in preference to DateTime
* change order of generic parameters in Result extension methods to be more readable
* rename generic type parameters and variables for consistency
* use AssertOk and AssertError consistently, without introducing separate variable for result
* rename local function in test
* follow existing pattern for datetime properties on FakeTokenPropertyProvider, and add test for expected errors on provider
* format Assert.Throws to wrap lines
* use ResultCodes property for returning specific result codes
* simplify test assertions for collections