Added a cancelling function that can be used after some time has passed.

[As discussed](https://forum.ethereum.org/discussion/638/youtube-i-want-half-marriage-smart-contract-for-ethereum#latest)(a little) Also added some tests. The amount of time that has to pass is based on a set-date compiled-in.

Also there are more `stop('hammer time')` and `assert self.stopped == 'hammer time'` statements, in part they're redundant, of course.