Add cancel parameter to Keys[Prefix]

@philips, I believe this is the same API as your PR #14, with a few tweaks to abide my particular style idiosyncrasies :) OK from your side? 
Maybe a better way to express it:

```go
	close(cancel)

	runtime.Gosched()

	if key, ok := <-keys; ok {
		t.Errorf("expected closed keys channel, got value %q instead", key)
	}
```