Fix constraints to be added in reverse order

* Constraints are added from the deepest type, up to the root, but
  when we evaluate them we want to start with the root constraints
  first since they are much more generic. We make assumptions in the
  leafs about which methods are available, because in the root we do
  things like type checking first.
Add specs for Axiom::Types::Hash.finalize
Update flay threshold