Use weakref to hold matcher

There is a cyclical reference here where the matcher holds a list of
requests in history and the requests hold a reference to the matcher.
Break this using a weakref so that it can be cleaned up easily.

In practice I don't see this being a problem as people will want to test
that value as part of the test where the mock is still active.

There has not been a release with this functionality so there is no
compatibility change.

Change-Id: Id1669ea40a48d09432367646a0004866947ff72b