Use local boost::shared_ptr for each acceptor.

- use local boost::shared_ptr<> for each acceptor
- use boost::move to move boost::shared_ptr<> without memory barrier
- use boost::make_shared<> to create each connection
- remove: boost::enable_shared_from_this<connection> and shared_from_this().reset(); which can only destroy a copy of the returned pointer shared_ptr<>, and can't destroying current object. The object is automatically destroyed after the completion of the function: void connection::run() - you can see it if using std::cout in destructor: ~connection()