Fixes TCP Reno fast recovery

TCP Reno was getting stuck in fast recovery mode, and it turned out to
be an issue with the timeout length (it was timing out during fast
recovery, causing it to re-enter fast recovery mode, creating an
inescapable loop).  I fixed it by setting the timeout to be the maximum
of the current timeout length and 2 * RTT each time Reno receives an
acknowledgement.
Creates TCP abstract base class

I created an abstract base class for TCP algorithms containing things
like window, timeout, etc. properties & commonly used utility functions.
Also fixed packet retransmission for FAST TCP (which was broken for test
case 0).  Also made some minor stylistic changes & added some inline
comments.
Cleans up resources module

I altered LinkBuffer.buffered to actually be directional, added some
inline comments, and made cleaned up some outdated code & comments.
Finishes clean up of process module

I added the Router.routers property to simplify accessing the list of
connected routers, some inline comments and the _flush_wait attribute (to
get rid of the magic number in Link._flush for the empty buffer timeout)
in the Link class.  Also updated Link.cost to use the now directional
LinkBuffer.buffered, and moved the call to LinkBuffered.update_buffered
to Link.receive, i.e., when the buffer increases in size.
Moves Network class to test module

Given that the test module has become the home of all other simulation
testing functionality, it seems appropriate to move the Network class
there, and remove the Network module, especially since Network is
heavily dependent on things defined in test, and test cannot function
without the Network class.
Removes monitor module

Why was this still here?  It's so outdated it hurts