Added HashOf contract to verify Hash<A,B> style constraints

See specs for examples. All specs pass save the one on `spec/contracts_specs.rb:189` which was broken when I got it.