BugFix: Proxy throws when Context is disposed

NetMQ.Proxy cannot exit cleanly when the Context is disposed because its
sockets throw TerminatingExceptions.
Tests: Monitoring needs more time for the events

Some runs are too fast for the Monitor to be notified so we'll wait a
bit before the Asserts.
NetMQScheduler which can be used to run TPL Task on NetMQ sockets.
Private delegates where incorrectly marked as events
replaced bitwise operation with more readable Enum.HasFlag() call
Removed AtomicLong and replaced its usages with direct Interlocked calls
cosmetic cleanup, no changes in logic
renamed tid to threadId to improve readability
Removed the usage of AtomicInteger
Code cleanup - updated field names to improve readability
Cosmetic changes to make the queue code more readable
Fixed the code for YQueue (chunk size should be at least 2, Back property was incorrect)

Added Tests for YQueue
Cosmetic changes to make the pipe code more readable, updated documentation comments, updated PipePair definition (no changes to logic)
Reformatting code
Renamed field "owned" according to naming conventions, updated documentation comments
Changed the way long are serialzed to byte array to be the same as ZeroMQ.

The big issue with this change is that it's making old releases of NetMQ not able to talk with each other.

I was able to fix this one way (incoming messages) with checking the MSB, don't have a solution for outgoing.
Added Endian option to a socket to support old versions of NetMQ.

The PutLong and GetLong methods now receive the endian type...
add tests to the endian feature.
Add the ByteArraySegmentTests
update the version of the DLL to 3.3.0.7