Add xmap to Shrink

Inspired by the recent commit from @ceedubs [1] which adds xmap to Choose, this

commit adds a similar xmap to Shrink which provides a way to create a Shink
instance from an existing Shrink instance of an isomorphic type

[1] https://github.com/rickynils/scalacheck/commit/c87978b52a8ce11a519fdf30ad543eda60d47507