Merge pull request #17 from hintjens/master

Cherry picking changes from libzmq master
Merge pull request #18 from hintjens/master

Cherry picking changes from libzmq master
Merge pull request #19 from hintjens/master

Updated NEWS for 4.0.1
Fixed NEWS for 4.0.1 release
Revert "distinguish between options and defaults"

This reverts commit e7db680f5b709ce821f79b1e8956f4cbd1931c11.
Revert "replace macro constants with enum types for user facing constants"

This reverts commit 4fb74539250d83e82e40e85d39e2e756eccdb8a3.
Fixed out-of-source build
Rename engine's methods to improve code readability
Identity can only be set on sockets that can connect to ROUTER