Refactor product duplication

CodeClimate didn't like `Spree::Product#duplicate`, so I performed [Extract Class](http://www.refactoring.com/catalog/extractClass.html)

https://codeclimate.com/github/spree/spree/Spree::Product

Also, I added some test coverage for calling `#duplicate_extra`.