2798: Initial commit of Go Keep client library.
2798: Initial commit, supports querying API server for list of Keep disks.
(new branch because I forgot to commit before leaving work)
2798: Turns list of keep disk objects into sorted slice of http URLs for keep servers
2798: Added comments to Python shuffled_service_roots and ported function to Go
2798: Started adding tests that ShuffledServiceRoots behavior is consistent
with Python reference implementation.
2798: Fixed inconsistencies with Python implementation of ShuffledServiceRoots.
Started working on KeepPut.
2798: Working on Transfer function, which will be the core function for
mananging concurrent writes to Keep servers.
2798: Work in progress connecting data read from input Reader to POST requests.
2798: Merged branch with code to read environment variables with branch working on Put support.

Merge remote-tracking branch 'origin/2798-go-keep-client' into 2798-go-keep-client

Conflicts:
	sdk/go/src/arvados.org/keepclient/keepclient.go
	sdk/go/src/arvados.org/keepclient/keepclient_test.go
2798: Checkpoint commit, tests for ReadIntoBuffer() and Transfer() pass.
2798: Added uploadToKeepServer() test
2798: Read requests from Transfer() now return a slice.  Added BufferReader
WriteTo() but for some reason http.Request Body isn't using it.
2798: All PUT tests against stub server pass.  Added explict setting of
Content-Length to avoid unnecessary chunked transfer encoding, and is also
necessary so slices can directly WriteTo() the socket.
Added block GET, and tests.
2798: Full integration test with real API server and Keep server succeeds.
Expanded return values a bit to include the URL that a block was actually
downloaded from on GET, and the number of replicas written on PUT.
Merge branch 'master' into 2798-go-keep-client
Moved non-keep-specific buffering code into a separate package.
2798: Added AuthorizedGet(), Ask() and AuthorizedAsk().  Added BLOCKSIZE
constant and moved errors.New() declarations to the top of the file.  Improved
test server runner.  Changed some test methods to take copies of KeepClient
instead of pointer.
2798: Completed move of Transfer() related code out to 'buffer' package.
2798: Continued refactoring buffer reader into separate buffer package.  Made
internal buffer management functions package-internal and added a public API.
Updated keepclient to use buffer package public API.  Added HashCheckingReader
to provide transparent checking of checksums.  Added more package and API
comments.