Add libevent abstraction layer

This layer helps us to write tests in which libevent functions
fail, to test the robustness of our code.
poller: use libevent abstraction layer
test/.../delayed_call.cpp: test failure of libevent APIs
test/.../delayed_call.cpp: make sure this->libevent survives move
Allow to tell IghtDelayedCall() which event_base it should use

Required by the regression test file for Poller that I will
commit in a moment.
Add regression test for Poller: test/common/poller.cpp
Add test/common/poller to .gitignore
Do not rely on global objects because they don't work in static libs

Basically, it is bad practice to rely on global objects, because their
constructor is only called when they are embedded into a dyamic lib.

I discovered this problem when I compiled libight in static mode to
make sure that there were no leaks in the tests using valgrind.

When libight is compiled in static mode, in particular, all the functions
of IghtLibevent are not properly initialized, leading to std::terminate.

To fix this problem, it suffices to use the singleton pattern [1] to
allocate a global-like IghtPoller and IghtLibevent.

[1] http://stackoverflow.com/questions/1008019/c-singleton-design-pattern
libevent.h: add IghtEvbuffer wrapper for evbuffer

The IghtEvbuffer class wraps for libevent's evbuffer. It provides move
semantic. It lazy-allocates an underlying evbuffer only when needed.

I plan to use this class (or a more complex class based on this class) in
connection.{cpp,h} to implement RAII and, thus, to simplify the constructor
and destructor of the IghtConnection class.
libevent.h: add IghtBuffereventSocket wrapper for bufferevent

IghtBuffereventSockets is a wrapper for a socket bufferevent that
implements RAII and the move semantic.

The plan is to use this wrapper to implement RAII in IghtConnection.
Merge pull request #14 from bassosimone/add-libevent-abstraction-layer-step1

Add libevent abstraction layer