Ensure interface compatability with FactKeyBuilder.
Change hash preparation to be a lambda rather than template method.

Add some specs around this.