Store stub ivars on `Assert` not on the object being stubbed

This changes to storing `Stub` instances on `Assert` instead of
the object that is being stubbed. This avoids cluttering the
objects inspect which, by default, display all ivars for an object.
It also avoids the `Stub` having to store the object it is
stubbing so it can remove the instance variable. Since the names
of the ivars are already object-method specific, they can all
be stored on `Assert` without any issues. This also doesn't
require using the `Assert.stub` interface and will work without
issue when using `Stub` alone.