Create new error code category for ZMQ

* Category name is "zeromq".
* Located in asio::error::zmq_error.
* Specified code numbers are not set yet.
Create exception class

* namespace asio::zmq.
* get_code function is intended to convert exception to error code.
Create context class

* Using exception to express zmq error.
* Forbid copying and moving a context instance.
Create frame class

* Frame is intended to represent zmq_msg_t.
* Real ZMQ message contains one or more frames.
* Frame can be put into STL containers easily.
* Exception safety.
Create socket class

* Use iterators to represent the read/write buffer.
* Read/write functions handle only one message in one invocation.
* Only support posix descriptor now.
* non_closing_io_object_service is intended to prevent asio api from
closing descriptor instead of ZMQ api doing.