Resolves ENG-1632. This diff addresses the scenario when a user changes font scale in system settings while the Comm app is in background. In this case, when returned to the app, the message heights measured by NodeHeightMeasurer were wrong.
I solved this by creating an app state listener which is triggered when the app comes from background to foreground, and then it compares the current system font scale with the last known value. If they're different, it triggers a complete measurement.
NodeHeightMeasurer utilizes various React component lifecycle methods to do its job. According to this diagram and the current component logic, the best way to trigger full measurement is to reuse its constructor code and recreate its "initial" state from props. This is why I extracted this code to a separate static method and used it in both the constructor and event listener.
Side note: I noticed that the NodeHeightMeasurer is a very complicated component that has very little to no comments on how it works, making it difficult to understand. I added a few minimal comments to make at least my part more understandable.