Merge pull request #159 from danbadge/master

Add available element to locker response
Have updated this test as the behaviour being tested is no longer valid, having been removed from the artist/toptracks endpoint. The new functionality is to just return an empty result set rather than a 1003 error
Merge pull request #160 from gregsochanik/toptracks-test-update

Toptracks test update
Start of the dotNet45 work. Update the .net framework version to dotNet45 in all projects
Reinstalled Newtonsoft.Json nuget package as this is needed after framework version change
Merge pull request #161 from AnthonySteele/dot-net-45

Start of the dotNet45 work. Update the .net framework version to dotNet4.5
Async all the requests!
The big one, touching a  lot of files. Checkpoint commit not that it compiles
- Please() and Response() return Task<T> not T. All requests are async
- using System.Net.Http.HttpClient (new in .Net 4.5) for the underlying Http connection. It's better in many ways. and it's only async.
- all tests are async and await.
- Delete the HttpMethod enum as .net 4.5 has this (though each http method is now an object not an enum member)
Fix tests
Notably that HttpMethod is not an enum any more (see System.Net.Http.HttpMethod),
and HttpMethod is not serializable, when it needs to be in a request in an exception
but these can be worked around
Merge pull request #162 from AnthonySteele/dot-net-45

Dot net 45
Minor fixes
- after upgrading to .net 4.5, we actually depend on newtonsoft.Json v 6.0.3. The nuspec file should reflect this
- updated the version no in AssembyInfo files for wrapper and schema
Merge pull request #163 from AnthonySteele/dot-net-45

Minor fixes
General review of tests
 - remove api requests from testFixtureSetup inBasketCreateTests.cs as setup methods are not designed to be async. Use a method called in the async test instead. Removed the "BusyAwait()" hack as it's unused after this.
 - deleted some tests which are ignored because they require special access rights. They don't belong in this solution any more.
 - In many tests, separate the steps of building an api request from the step of firing it.
   Only the firing step with ".Please()" on the end needs "await" at the front of it.
   They can be all chained up if you like, but I prefer two steps as a matter of taste.
 - fixed some poor names. Lots of things were called "artistBrowse" regardless of type.
 - type respoinses as "var" as per house style
Merge pull request #164 from AnthonySteele/dot-net-45

General review of tests
Response cache keeps the parsed object rather than parsing the cached request each time
keeping the result of the parse instead of the response text and headers will be faster and small
Refactor to StringDeserializer:
- use new T() not Activator.CreateInstance to make an object
- Add the generic constraint that DTOS much have a parameterless constructor. It did anyway, just not visibly: previous use of Activator.CreateInstance<T>() depended on new() being present. Now we will fail at compiler-time not runtime if it's not there.
- StringDeserializer is generic on the method not the class
- the generic on ResponseParser can also move down to the Parse method
cache TryGet() can be generic
to save the caller a cast and to supply the cache with a type
ResponseAs<R>() api method
it doesn't work yet as it hasn't been tested
But it should work for responses in either json or xml (assuming that json responses have a valid content type)
Simplest success case tests on ResponseDeserializer
tests on ResponseDeserializer
And a refactor.
I want this class to take over from StringDeserializer, but not yet. Added JsonParseFailedException for general case of response not being parsable as json. It seems that if the property names don't match up then the json parser lets it slide, so there's no exact analogy to UnexpectedXmlContentException
integration test on ResponseAs()
Will check later if this works.
Fix failing integration test