Make IghtConnection movable

This is implemented by renaming IghtConnection as IghtConnectionState
and by creating an IghtConnection that wraps IghtConnectionState.

IghtConnectionState works as before. Namely, it passes to libevent
the `this` pointer. This fact makes IghtConnectionState non movable.

IghtConnection allocates IghtConectionState on the heap. IghtConnection
is movable because its memory address is not passed to libevent and
because the move operation passes the IghtConnectionState pointer along.

While there, merge the "attach" and "connect" constructors of the
IghtConnectionState class into a single constructor.

While there, throw bad_alloc on memory error (rather than runtime_error).

While there, minimize the headers used.

Of course, update the test program accordingly.