optimization : add method modified_time().
This is for example used by django static "collectstatic" to know whehter the file is already uploaded and uptodate.
Very often exists() modified_time() and size() will be called subsequently for the same 'name'.
It is suboptimal to perform a RPC call each time and slow the whole thing a lot.
As an optimization, keep a cached value of the last 'head_object' requested.

Use case : django 'collectstatic' is a lot faster.
swift client has both a low and a high level API.
Switch storage.py to use the lower api, so that we can actually share
* http connection
* auth token
for all subsequent calls.

This makes for a HUGE improvement in speed, and lower the pressure on openstack API (most notably keystone) when doing a collectstatic