kernel: Fix missing reference release in CreateThreadEvent.

CreateThreadEvent::DoDPC() missed a reference release to balance the
acquired reference before queuing the DPC, resulting in the
CreateThreadEvent objects being leaked.

This also removes the destructor that tried to cancel the DPC. Since
the class is reference counted and only destroyed when the DPC has
run and released the last reference, this didn't make much sense.
U-Boot: introduce a start_gen() catch-all entry

So we can pass it all the optional stuff instead of playing tricks
to initialize them outside of BSS.
U-Boot: move gUImage and gFDT back to BSS section

No need for this trick anymore.