[platform][pc] Add ide driver using driver model.
[lib] Add ffs FAT FS library.
[lib][libc] Add prototypes for FILE stream API.
[dev] Add UART class driver API.
[platform][pc] Add UART driver.
[target][pc-x86] Add driver config and init.
[include] move ssize_t back to int

Having it be long caused enough problems, move it back to int for now.
[make] rename INCLUDES -> GLOBAL_INCLUDES

To be more consistent, rename make variable INCLUDES to GLOBAL_INCLUDES.
Also remove the need to put -I in front of each field, the make system
will do that for you.

To fix your module makefiles:
-Change INCLUDES -> GLOBAL_INCLUDES
-Remove -I prefix
[make] rename DEFINES to GLOBAL_DEFINES

To fix your module makefiles:
-Change DEFINES to GLOBAL_DEFINES
[make] rename DEBUGLEVEL -> LK_DEBUGLEVEL, remove DEBUG define

-Remove top level DEBUG=<N> define
-Rename DEBUGLEVEL to LK_DEBUGLEVEL to be clear.
-Fix the places that used DEBUGLEVEL and the few spots that #ifdef
on DEBUG.
[make] add -Wstrict-prototypes and clean up old C style prototypes

replace all built versions of foo(); with foo(void);
[platform][sam3] fix warning in Atmel code
[kernel] move the top level kmain() out of kernel/ into top/

The kernel shouldn't really own most of the bringup of all
the modules. Generally speaking the kernel can and should be treated
like any other module in the system.
[arch] factor some common parts of linker scripts into a separate file

INCLUDE the parts of the linker script that are specific to lk into
each of the arch's scripts.
[ide-ffs] Merge remote-tracking branch 'eieio/ide-ffs'
[make] warn a little nicer if someone is using old INCLUDES and DEFINES
[lib][ffs] fix makefile for new makefile tweaks
[include] add __CONSTRUCTOR and __DESTRUCTOR #define for the compiler
[arch][arm] fix initializer and destructors in the linker scripts
[arch][x86] add KEEP to constructors and destructors