Refactor Shipments API & JS.

I still need to update the guides, but want to get some feedback now.

In reference to https://github.com/spree/spree/issues/4523