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.
Adds edge case to _distribute_homeless_shares

Adds exception to _distribute_homeless_shares that caused
tests to hang indefinitely.
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.
Fixes issue in test_problem_layout_ticket_1128

Deleting the storedir breaks the test server by setting the remaining
free space to 0, and therefore the server will refuse any shares even
if the placement algorithm is correct. This removes the shares from
server 0 without corrupting its other properties.
Adds edge case when happiness can't be met
Calculates maximum matching from readonly servers first

In order for happiness_upload to return a happiness of 3 on
test_problem_layout_ticket_1128 in test_upload.py, the readonly
servers must have a higher priority than other existing shares.
Removes some unnecessary parts from old uploader
Queries for Upload of Happiness should be 2 not 1

Unlike the previous algorithm, Upload of Happiness should make
two queries to the servers instead of one. The first query is to
ask about existing shares and the second query to ask the server
to store some shares for us.
Happiness Upload will not place shares in these cases

Happiness Upload will not place shares unless it knows it can
be succesful. Therefore for these tests, a partial placement
of shares will not occur.
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.
Reworks test_lost_servers test in test_download

test_lost_servers is modified to reflect the different set of shares
the new fidner will reliably reproduce.
Modifies test_good_share_hosts in test_checker for Upload of Happiness

Changes test_good_share_hosts to check for behavior which
applies to Upload of Happiness instead of checking for behavior
that is specific to the old algorithm.
Adds specification doc for Upload Strategy of Happiness
Peer Selector tracks allocations accepted by the server
Changes test_servers_responding to reflect Upload of Happiness behavior

The test relies upon the old algorithm which would distribute shares
in increasing order to the servers. However, Upload of Happiness
doesn't guarantee this behavior so removing share 9 is not necessarily
removing the share from the server that is set to break.

To get test the same behavior the share 8 must be deleted instead.
Changes test_5_overdue_immutable to reflect Upload of Happiness

Changes which shares should hang for test_5_overdue_immutable in
test_hung_server.py to reflect the first 5 shares that the sharefinder
will try to download.
Cleans up happiness_upload.py