Implements Happiness_Upload class

Implements the Happiness_Upload class to generate a maximum
matching of peerids to shareids based on Kevan Carstensen's
master thesis. Existing share allocations are reused if possible
and their leases should be renewed by the uploader. If a shareid
does not have a match in the maximum matching graph, its
respective peerid is set to 'None'.
Add IPeerSelector interface from #1382

Adds the IPeerSelector interface established by kevan in ticket #1382
Implements PeerSelector class to track peerids

Implements the IPeerSelector class as PeerSelector and integrates the
class into Tahoe2ServerSelector in order to track peerids and existing
share allocations among the peers
Implements PeerSelector into Tahoe2ServerSelector

Initial attempt to refactor Tahoe2ServerSelector in terms of
the PeerSelector. This does not pass all of the existing
tests in test_upload.py
Refactors _get_next_allocation

Refactors _get_next_allocation so that peer_selector.get_tasks()
is only called once instead of during every allocation since
the operation is relatively expensive. Write servers are queried
for existing shares after the readonly servers, and then tasks
are calculated.
Adds edge case when happiness can't be met
Removes some unnecessary parts from old uploader
Improves logging for error messages in new uploader
Adds failure message to _got_response_2
Removes extra +1 to number of servers contacted
Makes download finder deterministic

While the previous algorithm would reliably distribute shares
in increasing order to the trackers, Upload of Happiness doesn't do
this. This causes the finder to query for a random set of shares based
on the order shares are allocated by the uploader. In order for the
finder to have a reproducible behavior, the finder must sort servers
by their server id because Upload of Happiness tracks servers by server
id in a set.
Peer Selector tracks allocations accepted by the server
Reframes test_each_byte in terms of share 2
Cleans up upload.py
Limits the number of servers contacted by the uploader to 2n
Adds test_number_of_servers_contacted

This test ensures that Tahoe only contacts 2n servers during
the peer selection process.
Removes 'todo' from unit tests that are fixed by the new uploader and removes
tests that were specific to the old algorithm.

test_second_error: There is no concept of a third pass for the new algorithm.

test_problem_layout_ticket_1118: As noted in the comments this should pass.
Changes unit tests to reflect new upload behavior
Updates test_each_byte with different offsets

Now that test_each_byte downloads share 2 first, we can only detect corruption
at a different set of offsets. These changes reflect those offsets.

There is a significant reduction in the amount of corruption we can detect
when switching from share 0 to share 2. I'm not sure if this is a biproduct
of having a different share or if I have done something wrong. I may have
calculated the offsets incorrectly.

Also fixes catalog_detection in test_download.Corruption.test_each_byte
Adds specification doc for Upload Strategy of Happiness