x86: Make arch/smp.h a C++ only header
x86: Fix style

Thanks Axel.
scheduler: Encapsulate PackageEntry fields

Apart from the refactoring this commit takes the opportunity and removes
unnecessary read locks when choosing a package and a core from idle lists.
The data structures are accessed in a thread safe way and it does not really
matter whether the obtained data becomes outdated just when we release the
lock or during our search for the appropriate package/core.
scheduler: Remove RunQueue::PeekSecondMaximum()
kernel/util: Make MinMaxHeap::Peek*() const
scheduler: Encapsulate CoreEntry fields
scheduler: Encapsulate CPUEntry fields
scheduler: Encapsulate ThreadData fields