More elegant solution in matchers

Start using a hook for initialization so that users can customize how their
matcher object behaves on initialization. Undocumented right now, but it will
be documented.