feat: Upload/download files to google cloud storage.

This change set adds the ability to upload or download files from google cloud storage.
I don't think content type should be set for every request. For example, what if body is empty. In that case content type does not really have any value. My thinking is that BaseRpcRequest could be base of different types of rpc requests and I don't think we should assume that content is going to be json. The reason why I removed this is that it caused lots of trouble for me and a few hours of debugging as two content type headers were added and the requests were mysteriously failing.