Convert Locker to be instantiated.

As an instance, the Locker object is able to own the collection.
Calling code can then pass around the Locker without receiving code
being knowledgeable of the underlying mongo collection.

Static methods in PHP are essentially just namespaced global methods -
there is very little different between Locker::readLock() and
Locker\readLock().  These methods are more difficult to use: they can't
be passed around easily, they require the shared parameters ($collection
in this case) to be kept and available for passing everywhere the method
needs to be called, and are more frustrating to mock in tests if they
can be mocked at all.
I can definitely move `$pollDuration` and `$timeoutTimestamp` to the constructor.  If they want to change those for different locks, chances are they probably shouldn't be trying to re-use the same locker.  In other words, a single locker should be configured to behave in one way and those two fields probably do belong as part of the configuration of the locker behavior and not part of the usage of the locker.

Unless you object, I'll move those to the constructor as well.