Incorporated some changes from from @bmatson via issue #230
Added a node.js implementation of a mock pans server… Tests are a bit in flux, but you can run the node.js server manually for now to run them...
Cleaned up APNS channel a bit.  The cleanup and handle failed notification methods are a bit more readable, added some extra steps to ensure socket is completely killed in some areas.
Channels should now timeout and get killed if they aren't used.  This should help APNS issues.
Sleeping 1ms seems to really really really make things work better on high capacity...
Changed some test things
Fixed issue where the failed APNS message was being resent
Custom queue used now for notifications so that we can 'queue' notifications that need dequeueing right up to the front so they don't wait forever to be sent at the back
More APNS testing updates.  Tests now control the node.js mock server
Small test adjustments for apns
Manually brought in the suggested changes from pr #235
Stop double encoding xml for Windows Phone, as in #277
Channels could never scale down to 0 based on Idle timeout.  Fixes #241
Added Logger interface as per issue #230
You can now set your own ILogger in Log.Logger to do whatever you please ;)
Cleaned up locking, some cases List<T>'s were being locked on, made some other lock objects readonly
Bumped version to 2.1.2
Added the ability to specify an arbitrary applicationId when registering services.  This way you don't have to use multiple push broker instances, or subclass notification types to achieve multiple different mobile apps
Added tests for new Registration mechanisms
Updated readme
NuGet 2.1.2