This patch provides two major improvements to the readability of screen widget logs.
1. The render screen function is recursive in nature, and each render step will log every error. Most of these errors get thrown up to the previous render function, which causes them to get logged again. This is the primary reason that the log file explodes with messages.
To fix it, I introduced a special exception called ScreenRenderException which tells the rendering function that the particular error was already caught and logged, so it can just pass it up the chain.
2. HtmlWidget.java was throwing a RuntimeException, which pollutes the user's screen with a lot of error information. Instead of throwing RuntimeException, just render the error message directly to the screen. This is much more useful as it prints exactly what the error was and nothing more, allowing you to fix typos in the FTL much faster.