function RemoteTest(clone) {
        var this_obj = this;
        Object.keys(clone).forEach(
                function(key) {
                    this_obj[key] = clone[key];
                });
        this.index = null;
        this.phase = this.phases.INITIAL;
        this.update_state_from(clone);
        this._done_callbacks = [];
        tests.push(this);
    }
A RemoteTest object mirrors a Test object on a remote worker. The
associated RemoteWorker updates the RemoteTest object in response to
received events. In turn, the RemoteTest object replicates these events
on the local document. This allows listeners (test result reporting
etc..) to transparently handle local and remote events.