Build kernel and kernel modules with Android

From CyanogenMod 11.0, contributors:
rmcc, koush, chirayudesai, cyanogen, freexperia, yath,
pawitp, adamg-xda, Kali-, eaut, codeworkx, noobnl, turl, ohanar
add support for overriding build.prop settings.

Change-Id: Ie4224d608b7bcb0c2087bd77bc954f8f5f9b6495

Conflicts:

	core/Makefile
Allow a device to generically define its own headers

We have a few cases of devices including specific versions of projects
just because of modified headers (msm_mdp.h comes to mind), and I just
had enough of ifdeffing header files for specific cases (the P990 needs
a lot of these).
Now... if a target defines a TARGET_SPECIFIC_HEADER_PATH, any headers in
there will take precedence over the standard ones; for example, on the
p990, I have

TARGET_SPECIFIC_HEADER_PATH := device/lge/p990/include

which makes, for example, the
device/lge/p990/include/hardware_legacy/AudioHardwareInterface.h be
used instead of
hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.h
whenever a source file uses <hardware_legacy/AudioHardwareInterface.h>

Change-Id: I41b62668b60e3f62a6ebd3738d8d2675103a81e6a
build: fix target header overlay

LOCAL_C_INCLUDES as defined by the makefile should be put AFTER
the overlay includes so the overlay always takes precedence.

Change-Id: I489b2aab6dbacd9122d834f85e07b63ed1271f07
envsetup: set OUT_DIR to an absolute path always

OUT_DIR was set to $(TOPDIR)out previously,
but $(TOPDIR) was null, so it was a relative path.
This broke releasetools, inline kernel building, etc
since they require absolute paths.
Fix it so that it is set to $(shell readlink -f .)/out
if $(TOPDIR) is null.

Also remove hacks which checked if (OUT_DIR) was out
and changed it to $(ANDROID_BUILD_TOP)/out to workaround
the aforementioned problem.

Change-Id: I459a3b1325a1bbea0565cd73f6acf160d4ed9b39
Allow override of device asserts, including multi-device support.

Set in board file with TARGET_OTA_ASSERT_DEVICE.
Make compatible with CWM Recovery

Taken from cm-11.0, a whole mishmash of tangled commits
make this not possible to cherry-pick
mka bacon: produce flashable zip
Support building with GNU make 4.0

* It works just fine, no need for the warning.

Change-Id: Ifa2ab17454edfcd8b7840a7534f70576286f2864
build: Allow building with OpenJDK

Change-Id: I6348bc1187240729f75f50d7ef91802c68e7788b
Allow to build with Java 1.7
core: main: remove all the spam about including make files

Change-Id: Ifd2ef0e239d16b169c572472416c2c31df62a367
Add breakfast and brunch from CM