Schema hash spec has changed

It needs to be recoverable from the other fields.

This should go into some shared library.
Require locales be en_US

No idea how we're going to handle other locales yet, so at least prevent
us from lying about doing so.
More bugs found by scalacheck

The reason they're only found now is because scalacheck wasn't actually
testing many "interesting" possibilities.  I've got that happening
now I think.