Serialize error class and message separately

Also don't try to reconstruct the error object when deserializing.

Fixes #42 and fixes #43.
Fix build in Ruby 1.9

The error message is different, but the spirit is the same.

    # Ruby 1.9
    can't convert nil into String
    # Ruby 2.0
    no implicit conversion of nil into String
Match ISO 8601 exactly

After seeing how relying on #inspect can be a bad idea, I've decided to
use #strftime instead.
Add a helper method for creating failures
Use ISO 8601 helper method