Fog::Storage::OpenStack::Real#put_object: Don't use data when block is provided

Making request with 'Content-Length: 0' fails with status 499
Fog::Storage::OpenStack::Real#put_object: Document the block parameter
Fog::Storage::Rackspace::Real#put_object: Same
[rackspace] A test to reveal a bug in server.create
[rackspace] Fixes issue #2187 Compute.servers.bootstrap mutates the :networks option

Server.create modified the options it got. Most modifications were
reusable in succeeding invocations but mapping the :network ids
to json was not. It is safer to use a copy for all the values anyway
All OpenStack heat requests must contain User/Key.

Updates the OpenStack Orchestration request() method
so that all requests contain the X-Auth-User and X-Auth-Key
headers.

Heat requires these parameters so that it can make subsequent requests
based on the users behalf.

For reference see here:

https://github.com/openstack/python-heatclient/blob/master/heatclient/common/http.py#L186
Merge pull request #2192 from reynders/fix_2187

Fix issue #2187
Merge pull request #2165 from dgutov/open_stack_put_object_with_block

Fog::Storage::OpenStack::Real#put_object: Don't use data when block is provided
Merge pull request #2201 from dprince/heat_auth_user_key

All OpenStack heat requests must contain User/Key.