Use http magic on upload.
Change client datatype to struct.
memoize nodes
memoize parsed URL
Require pointer on Blobs since it uses Nodes
StorageNode.URLFor might need a slash.
Added RandomNode
Upload to a RandomNode
Nesting fields to avoid bookeeping

No need to explicitly name nested structures, we can use embedding.

dustin:

  I had to make the following change to this original patch.  I'm not
entirely sure how I feel about embedding because it makes things like
this easy, but it's at least clearly beneficial in the lock cases.

-	res, err := t.RoundTrip(req)
+	res, err := t.RoundTripper.RoundTrip(req)