Just standard multithreading stuff; access to the allocator while hot
threads are running means stuff can change underneath us even /during/
a read. I've mutex locked state for stuff in the drawing domain which
stops this issue.
Our threads need to negotiate access and mutation to the two
resources - we don't want them treading on each others toes when
generating new child nodes /or/ when trying to remove/add work to the
queue. The former situation is particularly worrisome due to how weak
the indexing system is with the allocator.