Backport ActiveSupport::MessageEncryptor/Verifier from Rails 4.0.4

This backports the versions of these classes from upstream rails at
051d289030a6cb86590cd1b619eae1879b48458a

The most notable differences are the ability to use non-Marshal
serializers and also specify a signature key which is distinct
from the encryption key.

Using a non-Marshal serializer (e.g. the provided NullSerializer,
or JSONSerializer) will make interop with non-Rails things easier.
Merge pull request #16 from square/backport-message-encryptor

Backport ActiveSupport::MessageEncryptor/Verifier from Rails 4.0.4