Added async/await support

Added support for the .NET 4.5 async and await keywords. This makes writing non-blocking USB code substantially easier. I also added timeout support to the legacy asynchronous code, and updated NSubstitute so that it would work with .NET 4.5.