assert: add BUG() macros, that didn't respect NDEBUG macro
server: replace boost::asio with libevent library

This patch contains next changes:
- commandserver: replace boost::asio with libevent library
- session: replace boost::asio with libevent library
- drop ioservicepool (deprecated workers for boost::asio)
- convert boost::asio endpoints to standart POSIX API
- listen on 127.0.0.1 by default (boost endpoints have some defaults,
  seems that "0.0.0.0")
- doc: replace boost::asio by libevent

Rebased from libevent-aio branch, see also libevent-aio-dev more history
commandserver: ignore SIGPIPE (to avoid breaking server)
server: break the event loop on SIG{INT,TERM} and free resources

After this patch the benchmarks are passed without any errors, while
before there are some becuase of non-clean exit, it can't create socket
because of non-closed sockets on previous server shutdown.
This patch also fix leaking of some libevent structures, and now
valgrind shows leaks only in boost::log.

I've checked benchmarks multiple times, no errors occurred.
server: threads support for libevent aio level

This implementation use pipe(2) to bypass commands to server threads,
this _command_ contain Request structure in it, with all needable
information to allow thread serve client request.
This implementation still have todos, but this will be done later I
think.

And you still can avoid creating extra threads by using -w0, this will
use only event loop in the main thread of boostcached.

And we need new graphs/benchs since 2 threads can be non-optimal with
this implementation (I already see some difference on graphs, but need
more time to summarize this).
server: turn on libevent debug mode with -vvvv and more
server: add more BUG() for libevent's stuff
server: use per-thread base for session objects (to avoid races)

Before this patch boostcached with particular options exited from main
event loop, even if we don't asked to.

Steps to reproduce:
  $ boostcached -w1 -vvv
  $ bc-benchmark -s .cmake/boostcached.sock

After benchmark finished server existed, without preparing to stop,
and appropriate message will be written (about routine is not
prepared for this).

I believe that this is because we use main base (created in the main
thread), in our routines, which are separate threads by it's nature.
And this is very bad, since it can harm event_base internals.

After this patch all seems to be okay, except that no response for first
request from server with -vvv, but with -vvvv we have a response. (Ugh.)
server: reduce size of structure that is passed over pipe(2) to routines

We don't need evconnlistenere already, since we have base in routine,
and that is enough.