Implement exchanges

@huoxito per your request, here is a PR to lay out the initial code for exchanges (on top of commits from two dependent pull requests https://github.com/spree/spree/pull/5055 and https://github.com/spree/spree/pull/5042)

It is more pseudocode than anything else right now, but hopefully gives you an idea of the direction
I'd like to see inline javascript moved into the asset pipeline structure.  If you can't already scope this javascript to only execute on the appropriate controller/actions with a body class or something we should add them.  A major refactoring of the backend is going to be taking place, and hopefully a ton of superfluous javascript will be thrown out. Let's get a nice structure figured out now with the Returns javascript that keeps script out of the views, and in an easy to find folder/file naming pattern.