Prevent accidental use of the GlobalThread constructor.

Even GlobalThread instances for other Pds (for which it was
originally intended) are not created on the stack. Thus, we
can also provide a static create method for it.
Use Reference when working with Thread.

Since GlobalThreads destroy themselfs on terminate, it was a bit
unfortunate previously that one had to be careful when accessing
the thread-object after the thread had been started. Now, we
don't pass a pointer to a thread-object around but a Reference
to it. Thus, the thread-object will only be destroyed if the last
Reference for it is destroyed.
Removed thread-ids; use pointer for join.
Ignore prints if we don't have an object yet.

This occurs if we want to print something before, e.g.,
Serial has been created. In this case, it shouldn't terminate
but just ignore the printing.