Improve `change` failure messages.

There were a couple of cases that produced puzzling failure messages:

k = "foo"
expect { }.to change { k }.to("foo")

..used to fail with:

  expected #some_value to have changed to "foo", but is now "foo"

..and now fails with:

  expected #some_value to have changed to "foo", but did not change

k = "foo"
expect { }.to change { k }.from("foo")

..used to fail with:

  expected result to have changed to BasicObject, but is now "foo"

..and now fails with:

  expected result to have changed from "foo", but did not change