Socket type can now be either a Number or a String

Previously, only String "type" arguments were allowed by the Socket constructor, even though the doc comment specifies otherwise.

Now, either a String or a Number is accepted, as expected.

There is one side effect: this.type is always the type Number. Comparisons against this type should be made against zmq.types.