ARM: Add ARM architecture detection to generic bootloader ARM code.

This detects everything up to ARMv6 right now. Need to check more
recent ARM ARMs for ARMv7 detection.

The detected details get passed on to the kernel, which can use
the pre-detected info for selecting right pagetable format and such.

Copyright removal of Axel done after agreement with Axel @ BeGeistert
that for files that were copy/pasted from x86 arch and then fully
replaced the implementation, removal of original copyright holder is
allowed, since their actual code is gone ;)
ARM: add todo note about VM implementation

Signed-off-by: Ithamar R. Adema <ithamar@upgrade-android.com>
ARM/u-boot: Add support for FDTs passed in the uImage

Since we're using multi-part uImage format, we can add the FDT as
a seperate "blob" in the uImage, if the used U-Boot version is not
"FDT enabled".

This is used for example for our Verdex target. Currently I've got
a local hack in the platform/u-boot/Jamfile, looking into pulling
in the FDT files and a proper Jam setup to do that properly...
OpenGL Kit: Use GLU-9.0 for gcc2 and gcc4

 * As of Mesa3D 9.0+, GLU is a seperate project
 * Our in-tree GLUT builds with GLU-9.0  without
   modification.
 * We ignore the GLU libraries that Mesa-7.8.2 and
   Mesa-8.1-devel provide and use the glu-9.0 ones
 * This is kind of a limbo state, but works for now.
 * Eventually we will be on Mesa 9.0 (which requires
   the external GLU) and Mesa 7.8.2 (which works with
   the newer external GLU) and will rip GLU out of the
   7.8.2 OptionalBuildPackage.
 * I don't *think* we are using the Mesa GLU headers...
   we will know for sure when I pull'em out of the
   OptionalBuildPackages :D
Fix #9148 and probably #9128.

uninit_timers() needs to wait for the timer thread to exit before
deleting the timer mutex.
Small style fix
NTFS: Fixed an issue with seek and read calls

Use B_GET_PARTITION_INFO and B_GET_GEOMETRY instead of libntfs' home-brewn
device size detection. This avoids KDL in AHCI module. By the way the mentioned
problem with seek a  should be investigated separately - it looks like a bug in AHCI module.
NTFS: Fix an issue when fs_initialization re-calling.

* Reset global variables for mkntfs module.
* Add error handling for mkntfs call.
Fix iterator in hash_remove_current() to not skip elements.

When iterator->current is NULL, hash_next() assumes we've reached the
end of a bucket (linked list) and moves to the next one. Wehn the first
element of a linked list was removed in hash_remove_current()
iterator->current was set to NULL, causing the next call to hash_next()
to skip over the rest of the list of that bucket.

To fix this we now decrement iterator->bucket by one, so the next call
to hash_next() correctly arrives at the new first element of the same
bucket. Doing it this way avoids having to search backwards through the
table to find the actual previous item.

This caused modules to be skipped in module_init_post_boot_device()
when normalizing module image paths so some of the module images ended
up non-normalized. This could then cause images to be loaded a second
time for modules that were part of an actually already loaded image.
This setup is present for the PCI module with the pci/x86 submodule
and would lead to a second copy of the PCI module image to be loaded
but without being initialized, eventually leading to #8684.

The affected module images were pretty much random, as it depended on
the order in which they were loaded from the file system, in this case
the boot floppy archive of the El-Torito boot part of ISO and anyboot
images. The r1alpha4 release images unfortunately had the module files
ordered in the archive just so that the PCI module image would be
skipped, allowing #8684 to happen on many systems with MSI support.

Since the block cache uses hash_remove_current() as well in some cases,
it is possible that transactions in its list could've been skipped.
Cursory testing didn't reveal this to be a usual case, and it is
possible that in the pattern it is used there, the bug wouldn't be
triggered at all. It's still possible that it caused rare misbehaviour
though.
Fix typo.
Use a static_cast when removing menu item from BarMenuBar

... instead of a C-style cast. Also some minor style fixes.

Might fix #9151 although since I can't reproduce the bug here I have
no way of knowing.
Assume AddItem and RemoveItem could fail and handle those cases.

This is some defensive coding that assumes that the AddTeamMenu(),
RemoveTeamMenu(), AddSeperatorItem(), and RemoveSeperatorItem()
methods might fail and tries to compensate. Although it is unlikely
to be the case that these methods could fail I am trying to prevent
the bug that caused #9151 to happen.
Alter Add and Remove methods to return whether or not the add or remove succeeded.
Remove cast to BMenuItem* it is not needed
DiskUsage: remove path monitoring and "outdated view" notification

Was unreliable, too many files to monitor (would exceed too easily the 4096 files limit).
DiskUsage: update status view after zoom in or zoom out. fixes #6756.
DiskUsage: added ability to cancel an ongoing scan.  fixes #6801.

Also, progress now goes from 0.0 to 1.0 rather than from 0.00 to 100.00
(to avoid a * 100, followed by a / 100)
DiskUsage: avoid leaking the saved scan snapshot
ARM/libroot: import files from glibc-ports-2.9

There is no ARM port for the glibc version we're using mostly, so I'm picking
up files from more recent glibc and will probably need to hack around in them,
as glibc seem to have cleaned up their arch support a lot these days.
generic/libroot: Add missing generic functions

This adds a few generic implementations of basic arithmetic functions. These
would normally be implemented in assembly, but add them for easy bringup of
new architectures.

This enables new platforms to start with a minimal set of changes to libroot.