Allow individual projects to enforce a property's value

Some projects require system properties to be set to a specific
value (for example, a shared library needing a property pointing
to its own path) in order to work correctly, but some device
configurations are mistakenly setting those properties with the
wrong value (usually inherited from the original OEM build).

"PRODUCT_PROPERTY_UBER_OVERRIDES += property=value" can (and
should) be used in that project's makefile to ensure the value
is the correct one. This variable is intended for software projects,
and should never be used in product makefiles (BoardConfig, cm.mk,
AndroidProduct)

Change-Id: I1986e7c444e51cce8b198e43fdc793fad16d6276
build: Add support for PRODUCT_COPY_FILES_OVERRIDES

 * We may have a case where prebuilts need to be built from
   source instead based on an externalized config.
 * New directive takes a list of destination files to remove from
   PRODUCT_COPY_FILES so that other instructions can be supplied.

Change-Id: I7feff16440e54d1676ffddbbd96d5947efa43ede
Move emulator.mk out of full_base.mk

Instead we should have the emulator products (full, full_mips, full_x86,
sdk) inherit from emulator.mk directly, because full_base.mk is also
inherited by real device products, such as full_manta.mk.

Conflicts:
	target/product/full_base.mk

Change-Id: I6f5f9255c73be8a4cfad7ddf88c4b633b05a7091

Conflicts:
	target/product/full_base.mk
signing: Support userdebug-generated display.build.id lines

Change-Id: I3ae608c12a15f6ede2150567662befa7fce763ca