Changes how the unique identity is calculated

In the past rivet was marshaling a hash and then taking a sha1 of it.  This
worked really well until it didn't anymore.  The problem here is other VM's such
as jruby or rubinius will marshal the objects differently causing the identifier
to be not so deterministic.

Now we construct a string (with the values base64 encoded) and take a SHA1 of
that.

The unit tests now reflect this change as well.