untabify gmmd.coffee
Resolve many issues in synchronisation.

Barrier asyncs could make the barrier trigger before everybody
had effectively been added. Now async callbacks are deferred until barrier.run()
completes and the onFinish callback is effectively run when all deferred
and synchronous callbacks are finished. Barrier.run() is asynchronous
if there are asynchronous callbacks registered. This class is a mess.

Many other small fixes on when actions get triggered, better use of events and timeouts.

Enforce some data copying.

Result of all this is that Firefix and Chrome can run 4 instances simulatneously.
Actually, the hardest part was the proper initialisation.

This is a first step in cleaning up anyway.