Implemented timeout mechanism for heartbeat class. Structurally refactored the heartbeat class code a little. Adjusted the endpoint's usage of the heartbeat class accordingly. The network exception tests should now pass even on OS's where recv does not always return easily, albeit slowly due to the timeout. We should think about allowing the programmer to set timeout value in the constructor of the endpoint object, e.g. Waldo.tcp_accept(..., conn_timeout=TIMEOUT,...)