Frontend on bootstrap

This is a continuation of https://github.com/spree/spree/pull/5044 and any further work towards completing the remaining points should have a PR submitted against this canonical frontend_on_bootstrap branch.

__What's left to do?__

* [ ] Integrate spree_bootstrap_frontend with spree_auth_devise
  * [x] Pull out spree_auth_devise specific code into an internal gem
  * [x] Merge latest changes from spree_auth_devise (up to 761a9d5)
  * [x] Make specs pass (up to 761a9d5)
  * [ ] Merge spree_auth_devise specific code into a fork of spree_auth_devise
    * [ ] Manual regression testing
    * [ ] Create PR with spree_auth_devise
      
* [ ] Integrate spree_bootstrap_frontend into spree_frontend
  * [x] Pull out spree_frontend specific code into an internal gem
  * [ ] Copy bootstrap-kaminari-views into spree_bootstrap_frontend
  * [x] Merge latest changes from spree_frontend (up to b07b838)
  * [x] Make specs pass (up to b07b838)
  * [ ] Merge changes into spree_master_with_bootstrap_fork
    * [ ] Merge gemspecs
    * [ ] Merge Gemfiles
    * [ ] Merge CSS & JS
    * [ ] Remove installer generator (maybe make auto-accepted instead for override file)
    * [ ] Update frontend/README.md to better reflect the merging of both repos
    * [x] Move decorator code into real classes
    * [ ] Manual regression testing

* [x] Integrate spree_bootstrap_frontend into spree_core
  * [x] Pull out spree_core specific code into an internal gem
  * [x] Merge latest changes from spree_core (up to b07b838)
  * [x] Make specs pass (up to b07b838)
  * [x] Merge changes into spree_master_with_bootstrap_fork

Line is too long. [290/100]<br>Prefer `map` over `collect`.<br>Space found before comma.