Rework of APIC enumeration and topology evaluation:

The current implementation has a couple of shortcomings:

  - It fails to handle hybrid systems correctly.

  - The APIC registration code which handles CPU number assignents is in
    the middle of the APIC code and detached from the topology evaluation.

  - The various mechanisms which enumerate APICs, ACPI, MPPARSE and guest
    specific ones, tweak global variables as they see fit or in case of
    XENPV just hack around the generic mechanisms completely.

  - The CPUID topology evaluation code is sprinkled all over the vendor
    code and reevaluates global variables on every hotplug operation.

  - There is no way to analyze topology on the boot CPU before bringing up
    the APs. This causes problems for infrastructure like PERF which needs
    to size certain aspects upfront or could be simplified if that would be
    possible.

  - The APIC admission and CPU number association logic is incomprehensible
    and overly complex and needs to be kept around after boot instead of
    completing this right after the APIC enumeration.

This update addresses these shortcomings with the following changes:

  - Rework the CPUID evaluation code so it is common for all vendors and
    provides information about the APIC ID segments in a uniform way
    independent of the number of segments (Thread, Core, Module, ..., Die,
    Package) so that this information can be computed instead of rewriting
    global variables of dubious value over and over.

  - A few cleanups and simplifcations of the APIC, IO/APIC and related
    interfaces to prepare for the topology evaluation changes.

  - Seperation of the parser stages so the early evaluation which tries to
    find the APIC address can be seperately overridden from the late
    evaluation which enumerates and registers the local APIC as further
    preparation for sanitizing the topology evaluation.

  - A new registration and admission logic which

     - encapsulates the inner workings so that parsers and guest logic
       cannot longer fiddle in it

     - uses the APIC ID segments to build topology bitmaps at registration
       time

     - provides a sane admission logic

     - allows to detect the crash kernel case, where CPU0 does not run on
       the real BSP, automatically. This is required to prevent sending
       INIT/SIPI sequences to the real BSP which would reset the whole
       machine. This was so far handled by a tedious command line
       parameter, which does not even work in nested crash scenarios.

     - Associates CPU number after the enumeration completed and prevents
       the late registration of APICs, which was somehow tolerated before.

  - Converting all parsers and guest enumeration mechanisms over to the
    new interfaces.

    This allows to get rid of all global variable tweaking from the parsers
    and enumeration mechanisms and sanitizes the XEN[PV] handling so it can
    use CPUID evaluation for the first time.

  - Mopping up existing sins by taking the information from the APIC ID
    segment bitmaps.

    This evaluates hybrid systems correctly on the boot CPU and allows for
    cleanups and fixes in the related drivers, e.g. PERF.

The series has been extensively tested and the minimal late fallout due to
a broken ACPI/MADT table has been addressed by tightening the admission
logic further.