Make the unit tests more unit-testy
Clean up HasKey::__toString
Introduce HasProperty Matcher
Make note of (and test) HasProperty's throwing constructor
Introduce IsInstanceOf Matcher