Cleanly add custom errors for Ecto.Changeset.cast/4

This was my first thought at addressing this issue, we have several custom Ecto types that such as our own date format that we can do this for. But our total number of types we would need to do this for is around 12. Maintaining those custom 12 types just to set a cast message didn’t feel like a good trade off for the long run.