Make use of Data.Coerce when available

We can have a discussion about version numbers, best ways to define the implementation, etc, but here's at least a starting point to solving the ticket and implementing the feature.

Fixes #12