Don't leave accepting up to the callback

This simplifies usage of TCPSocket and is safer as it prevents the
backlog from filling up when the callback doesn't accept a connection
for whatever reason.

Further changes made:

 - Renamed TCP to TCPSocket as this is more representational.
 - Add -g flag to the C++ compiler to generate symbols for GDB.
 - Fix bug in TCPSocket's dtor which happened when tcp was nullptr;
   ::uv_close exhibits UB when called with a nullptr handle.