Fixes and minor updates for the timer migration code:

    - Stop testing the group->parent pointer as it is not guaranteed to be
      stable over a chain of operations by design. This includes a warning
      which would be nice to have but it produces false positives due to
      the racy nature of the check.

    - Plug a race between CPUs going in and out of idle and a CPU hotplug
      operation. The latter can create and connect a new hierarchy level
      which is missed in the concurrent updates of CPUs which go into idle.
      As a result the events of such a CPU might not be processed and
      timers go stale.

      Cure it by splitting the hotplug operation into a prepare and online
      callback. The prepare callback is guaranteed to run on an online and
      therefore active CPU. This CPU updates the hierarchy and being online
      ensures that there is always at least one migrator active which
      handles the modified hierarchy correctly when going idle. The online
      callback which runs on the incoming CPU then just marks the CPU
      active and brings it into operation.

    - Improve tracing and polish the code further so it is more obvious
      what's going on.