* Parts of System.Console.Concurrent may not be async exception safe.

  If a thread is running an action from that module and an async exception
  is sent to it, it may result in a deadlock or other problem.

  (System.Console.Regions has been made safe.)

* Calling setConsoleRegion with something that throws an error
  will cause no further display updates to happen.
  
  The exception in the thunk will crash the displayThread,
  and that is not waited on until the action passed to displayConsoleRegions
  finishes, so the exception is deferred to that point. Of course if the
  action never finishes, that hides the exception.

  It does seem this should be improved, by catching the crashing
  displayThread and ideally propigating the exception immediately.
  But displayConsoleRegions would need to use a different class than
  the current MonadIO to be able to do that. Eg, MonadBaseControl
  so lifted-async can be used, or a class that lets the action be
  canceled.

  Or it could be dealt with by having setConsoleRegion force the thunk
  before passing it over to the displayThread. But the instance
  ToRegionContent (STM Text) seems to prevent doing that.
