adds support for bucket transitioning/fixes bucket lifecycle management

This tries to preserve the original behaviour of get/put _bucket_lifecycle call.  For the most part it works, calls to put a new lifecycle policy in will work with the old calls, however the return from get_bucket_lifecycle  has been modified to the be correct,  the modifications also allow for the use of full bucket policy applications, and the use of date based expiry, and transitioning to Glacier.