Filled out setup and searchItem test cases

Filled out some of the test stuff for BuyerNode
Node requests can now ask for specific ID

Changed both node-side and tracker-side methods to allow requesting a
specific node's port instead of a random one.
Added SearchItem and BuyItem test cases
Added handleReceivedNode test case

Added a test case for BuyerNode.handleReceivedNode. Also made minor
change to design doc and added a couple events to BuyerNode. I love
events. They're awesome.
Filled out BuyerNode unit tests

Added hopefully sufficient test conditions for all BuyerNode unit tests.
buyItem updated, passes unit test

BuyerNode.buyItem now passes corresponding unit test case (with an
update to handleReceivedNode). However I'm starting to think the
underlying P2PNode needs an event-based redesign...
Fixed various errors in buyItem test case

BuyerNode.buyItem test case required calling startup first (in order to
have a port assigned) and had a couple other name errors.
BuyerNode.handleSearchReply now passes unit test

Added in BuyerNode.handleSearchReply functionality. Changed unit test to
run in multiple threads to prevent hanging.
BuyerNode.searchItem passes unit test

Filled out BuyerNode.searchItem so that it now passes the corresponding
unit test. For once this required no modifications to the unit test
itself.
Screw it, gonna do the event rewrite

Partially added search reply case to BuyerNode.handleReceivedNode before
I realized there was no way to make it work given the current structure
of P2PNode. Time for that event-based rewrite!
Rewrote P2PNode extensively

Not quite "event-driven", but...P2PNode has been extensively rewritten
in order to improve extensibility. The socket, address information,
connection thread, and all other stuff about a connected node is now
bundled up in one big juicy object.
Last commit missed tracker changes

Also altered the tracker so it will now accept and appropriately handle
NodeRequest messages with a list of already-known IDs (so it knows to
send a new one). Also, this should go without saying but the P2PNode
changes completely broke all the unit tests, which will need to be
rewritten. Cheers!
Rewrote BuyerNode

Rewrote BuyerNode to match the new patterns in P2PNode. Updated unit
tests to follow.