Add libevent abstraction layer (step1)

This pull request adds an abstraction layer for `libevent` that allows us to override the implementation of libevent functions to simulate errors. It also adds tests that take advantage of such feature.

While testing this pull request, I noticed (and [fixed](https://github.com/bassosimone/libight/commit/708550f469bcc0132b209681d380acc949e13aa0)) a really interesting bug: global variables are not initialized (i.e., their constructor is not called) when we compile `libight` in static mode (e.g., `./configure --disable-shared`). See [stackoverflow](http://stackoverflow.com/questions/9459980/c-global-variable-not-initialized-when-linked-through-static-libraries-but-ok) for more on that.

This pull request is called "step 1", because step 2 will follow. In step 2, I will add wrappers for commonly used `libevent` objects (e.g., the `bufferevent`) with the objective of simplifying `IghtConnection`.