Introduce Link Time Optimization

Summary:
This introduces the following improvements:
  - Can be globally enabled with TARGET_ENABLE_LTO := true
  - Can be locally disabled with LOCAL_NO_LTO_SUPPORT.
  - Host modules now build without LTO by default.
  - Modules built with clang no longer need -fno-lto specified locally (LTO disabled here automatically)
  - Modules built with clang no longer have -fno-toplevel-reorder unnecessarily set.

http://pastebin.com/FaxSUzVy

ps5: don't enable it by default because of poor device support
ps6: make additional clang ignores lto-dependant
ps7: fix caucasian space
ps8: turn off section anchors when LTO is on (fixes "cc1plus: error: section anchors must be disabled when toplevel reorder is disabled")

Signed-off-by: bart452 <bart_96@live.nl>

Change-Id: I17ea1d46cf1ba9bace70acd89a80143060f3bc31
Clean up

Change-Id: Idaa90afd2205e39f7d4b04145552126a6c6289a6
Specify -mcpu=cortex-a15 for krait CPU variants.

Bug: 11178216

Change-Id: I9922e4cd5ba27e3857798aae5c84299e26e054ea
build: Store no_separate_recovery flag in misc_info

This may be needed during a signing process.

Change-Id: I0ab6f0e615f64c0529e605c2fa62fabf1b1ec52b
build: Handle boot images with custom makefile properly

When a pre-built image should be used, it should be stored in the
target files zip so that it can be used with external signing
processes.

Change-Id: I2661af9ac58af30bb9314b552775046d3abf44e0
BoardConfig.mk.template: Add TARGET_CPU_SMP

This one is easy forget if not in the template

Change-Id: If65e557a661ecc81c6bfc434525b3c9937ff988e
Kernel: add new variables for TARGET_KERNEL_CUSTOM_LINARO_TOOLCHAIN

(cherry picked from commit 615d67ed3bd2b8ae4511d8d021681ae705fa8be5)
Signed-off-by: Hieu Phan <aznrice2k4@gmail.com>

Conflicts:
	core/tasks/kernel.mk

Change-Id: Ic824ec172f38c9cb27f6fb6ed3e6efd1705cf976