Normalize Product#slug on update

friendly_id only generates the slug by default when it's nil. Spree
however allows users to set it directly in the backend and we need to
make sure a valid slug gets persisted otherwise users might run into
route errors trying to see the product

Fixes #4451