[libc] tweak stdio routines to be a bit more standard

change getc/putc/getchar/putchar style routines to take a fake
FILE pointer.
Move log2 to log2_uint to not collide with stdc log2()
[libc] fixup users of newly modified stdio routines
[app][tests] disable printf formatting warnings for printf test
[make] remove -fno-builtin

fno-builtin was mostly unnecessary before, but required some libc
work to run without it, due to standard function signature mismatches.
[scripts][buildall] change the logic to build everything in the projects dir
[projects] remove the unused aboot-* projects
[scripts][buildall] try to guess the number of cpus on linux machines
[scripts][buildall] remove useless line
[kernel] locking primitive cleanup

-Add static intializers for all of the locking primitives of the form:
    foo_t bar = FOO_INITIAL_VALUE(bar);
-Remove the conditional mutex check and just test on DEBUGLEVEL > 0
[app][thread_tests] add a few tests for the static initializers
[include] add better version of STATIC_ASSERT

Uses the new C1X _Static_assert if available
[arch] Add __drivers and __devices arrays to ld scripts.
[dev] Add simple multi-instance device driver model.

Model supports class drivers capable of driving multiple device
instances independently. Implements simple pattern for device life
cycle management. Completely optional and self-contained.
[dev] Add device class APIs for block IO, I2C, and SPI.

Device class APIs are generic interfaces common to drivers of the
same class. An interface is comprised of a standard set of driver
ops and API wrappers that make use of those ops to carry out the
desired actions on the driver.
[git] Add cscope.* to .gitignore.
[kernel] Keep load percentage from underflowing.