helper: remove timings["existence_check"], aka "Already-In-Grid Check"

This measured how long the Helper took to do a filecheck before asking for
ciphertext. The "Contacting Helper" report includes both existence_check
and the client-helper RTT.

For non-overlapping uploads, it was being returned correctly. But when
multiple upload requests overlapped, and the file was not already in the
grid, the filecheck would only run once, and its existence_check time would
be reported for all uploaders (even if they didn't have to wait for that
time). Cleaning that up proved too difficult: the only correct place to
report this time is from the initial remote_upload_chk() call, but the
return value of that is too constrained to accomodate it in the
needs-upload case.

So I'm removing it altogether. Eventually I plan to add a proper
events/times field and record more data, including this check, in a form
that can be drawn on a nice zoomable timeline view.

Old clients talking to a new Helper (which doesn't supply the value) will
tolerate the loss (they'll just display an ugly "None" on the web view).
clean up Helper to make later changes easier

Fix up control flow inside the Helper, to make it more friendly for later
refactoring.
Uploader cleanup: create results at end, not beginning

This will make it easier to populate the UploadResults during __init__,
instead of doing it one-field-at-a-time later.
add HelperUploadResults

This splits the pb.Copyable on-wire object (HelperUploadResults) out from the
local results object (UploadResults). To maintain compatibility with older
Helpers, we have to leave pb.Copyable classes alone and unmodified, but we
want to change UploadResults to use IServers instead of serverids. So by
using a different class on the wire, and translating to/from it on either
end, we can accomplish both.
convert UploadResults to a fat init

Populate most of UploadResults (except .uri, which is learned later when
using a Helper) in the constructor, instead of allowing creators to write to
attributes later. This will help isolate the fields that we want to change to
use IServers.
switch UploadResults to use getters, hide internal data, for all but .uri

This hides attributes with e.g. _sharemap, and creates getters like
get_sharemap() to access them, for every field except .uri . This will make
it easier to modify the internal representation of .sharemap without
requiring callers to adjust quite yet.

".uri" has so many users that it seemed better to update it in a subsequent
patch.
switch UploadResults to use get_uri(), hide internal ._uri

Complete the getter-based transformation, by hiding ".uri" and updating
callers to use get_uri().
split IDisplayableServer from IServer, add sb.get_stub_server()

IDisplayableServer instances provide just enough functionality to call
.get_name() and friends. When the Helper sends a serverid (so we know what to
call the server but nothing else about it, and have no corresponding IServer
object to reference), but we want to store an IServer in the UploadResults,
we create a synthetic IDisplayableServer "server" and store that instead.
UploadResults: store IServers internally, but still return serverids

This stores IServer (or IDisplayableServer) instances in the .servermap and
.sharemap dictionaries. But get_servermap()/get_sharemap() still return data
structures with serverids, not IServers, by translating their data on the way
out. This lets us put off changing the callers for a little bit longer.
change UploadResults to return IServers, update users to match

This finally changes all callers of get_servermap()/get_sharemap() to accept
IServers, and changes UploadResults to provide them.