Override source

In order for the source (uri and md5) to be overridden, the `source_uri` and `checksum` methods need to use the `source` method rather than directly accessing `@source`.

My first commit adds tests that fail when the source is overridden. The second commit fixes it. :smile: