prepareChapter
Lays out chapter if it is not ready yet. The one expensive call.
Blocks until the chapter is ready. Safe to call from any thread and from several at once: callers for the same chapter wait for one layout rather than repeating it. Out-of-range chapters are ignored.