Pass the script channel to DedicatedWorkerGlobalScope::run_worker_scope rather than creating it there.

This allows us to create the Worker object before calling
DedicatedWorkerGlobalScope::run_worker_scope, which is necessary to pass a
pointer to the worker to it.
Store a pointer to the Worker in the DedicatedWorkerGlobalScope.
Implement DedicatedWorkerGlobalScope.postMessage.
Distinguish the sender to the own thread and to the parent thread in DedicatedWorkerGlobalScope.

The WorkerGlobalScope stores a reference to the sender for the own thread, to
allow passing clones to sub-workers. The DedicatedWorkerGlobalScope
additionally keeps a reference to the sender for the (unique) parent thread,
to implement postMessage and memory management of the Worker object.
Merge pull request #3076 from Ms2ger/DWGS-postMessage

Implement DedicatedWorkerGlobalScope.postMessage; r=Manishearth