Fix regression for supported timestamp formats

We now accept:

* datetime objects
* ISO8601
* epoch seconds (both as an int or a string)

anytime a timestamp type is needed.  This puts back the previous
behavior that botocore had.

To accomodate this, I've added a new date parsing utility method
in the utils module.  It accepts any of the types listed above and
returns a datetime object with tzinfo.  This makes it easy to write
protocol specific timestamp serializers as they now can assume
they'll always be working with a datetime object with time zone info.

cc @kyleknap @danielgtaylor