Fix utf-8 encoding issue for bucket lifecycle

- multi-byte prefixes need to be encoded in utf-8
  before they are sent to S3.
- Added XML declaration for the lifecycle.
- Added unit test to set and retrieve a bucket config which
  demonstrates the utf-8 issue.
- Note: AWS doesn't seem to work properly when retrieving
  the Japanese prefix. It comes back garbled. The request
  is however sending correctly encoded utf-8 according to
  a packet trace. I've left the final Assert commented out
  in the test case until AWS fixes the issue.
Support Expiration date in bucket lifecycle object.

Changed the expiration parameter to be similar to the transition
parameter. It is now an object. The methods still take an
integer number of days but any code that looks directly at
the value of rule.expiration and expects it to be an integer
will now fail :-( Not sure how to make the transition smoother.

Added a unit test to test multiple rules together.
Update unittest to check for expiration object

Expiration is now an object with the attributes
days/dates so the unit test is now updated to reflect this.
Merge branch 'tpodowd-lifecycle_jp' into develop

* tpodowd-lifecycle_jp:
  Update unittest to check for expiration object
  Support Expiration date in bucket lifecycle object.
  Fix utf-8 encoding issue for bucket lifecycle
Merge remote-tracking branch 'upstream/develop' into develop