index: move seekFetcherMissTracker up a layer

In prep for missing blob dependency rescheduling in indexer.

Change-Id: I1d492e6aa64cfb658daec17e4621d1453c6d3607
TODO: more

Change-Id: Id83f4c319340d28e500ce889cd2ed951bd3998a1
types: add NewFakeSeeker

NewFakeSeeker returns a ReadSeeker that can pretend to Seek (based
on the provided total size of the reader's content), but any reads
will fail if the fake seek position doesn't match reality.

Change-Id: I4e63aa78c80fdbcd87b2133018009ed72bedb9f3
blob: move Blob type to its own file, add FromFetcher, FromReader

Prep for killing SeekFetcher.

Change-Id: Iade678ccf74d5ebc9613dbb9dbf44b9ed9ff4dea
gethandler: rewrite to not use SeekerFromStreamingFetcher; add tests

Change-Id: I785dd56f7bc7c1f113575700c74f910b4f4ea4a0
serverinit: fix flaky test. sort publishRoot prefixes, for predictable output

Change-Id: I230a7d344f9c982539b3ed6d3a88eb1066322ea5
Get rid of SeekFetcher vs StreamingFetcher distinction and complexity.

StreamingFetcher is now just Fetcher, and its FetchStreaming is now
just Fetch.

SeekFetcher is gone. Blobs are max 16 MB anyway, so we can slurp to
memory when needed. The main thing that cared about SeekFetcher
was the GET handler, ServeBlobref, because http.ServeContent needed
one for range requests. That's rewritten in an earlier commit, using
the FakeSeeker from another earlier commit.

Lot of code got simpler as a result.

Change-Id: Ib819413e48a8f9b8d97f596d0fbf771dab211f11