Refactor the reloading/hmr architecture

Reloading currently has many problems which lead to a lot of pain during the development. And I'm not sure if this might also impact the production build (most likely yes)

- use redux store always
- reduce side effects