Removed queue-based synchronization and replaced with @synchronized(self)

- There where hard to reproduce graphics glitches, most likely caused by this. #324
- I chose @synchronized because this supports recursion and I need to subclass this class

In the future the layout frame should get an async method for layouting instead of doing all of that synchronously