A generic library implementing hot reload for React components without unmounting or losing their state