[Ready?] Threadsafety

Needs more testing and thought.  This PR doesn't handle all events in order, but it does so for everything we care about I think.  Its possible we'll generate patches before we apply ones that are on hand, but thats ok.  Patches will be applied in order.