implement a DSL for consumers of the library to use.

Refactored FakeProviderServer to provide slightly less context on error reporting, context comes from verification step and this makes asserts easier

Implemented a hook for the verification, which is next on the list