Add a new change assertion, which tests results before and after

Add a new type of assertion for functions, possibly wrapped in a doing():
  * .should.change() asserts that the obj changes in value
  * .was() checks the value before (uses copy.deepcopy())
  * .now() checks the value after
  * .should_not.change() checks for inequality
  * .stays() checks before and after value is the same

Includes docs and tests.