build: Prevent some auto-generated variables from being overridden

These variables are used by internal processes for build indexing
and identification, and those processes expect either specific patterns,
or uniqueness.
So prevent accidental overriding of these by device configurations:
BUILD_DISPLAY_ID, BUILD_NUMBER, PLATFORM_VERSION, PLATFORM_SDK_VERSION,
PLATFORM_VERSION_CODENAME, BUILD_VERSION_TAGS

Change-Id: I06252f2687a5e5fd97ee21a98f26c739fd0ef6e4
Store the path to the ota file generator where it can be reused

Change-Id: I8896713c79a751b79fbbcc75f6ba30dad4ea9fac
build: Add support for vendor product and device name

 * CM's build system assumes some convention-over-configuration which
   we might need to override in order to conform to vendor requirements.
 * Allow overriding of target and product names using these new
   variables. This allows for CM conventions to work, while generating
   the correct fingerprint dynamically without post processing the
   strings.

Change-Id: Ic5913e587400dd38c04aa05de3a7becced77a59e
For user builds, use a release build id in the description if one exists

Companion change to Ic5913e587400dd38c04aa05de3a7becced77a59e

Change-Id: If5edbf56d567701f96f0ba46af9a90ffa8310c24
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
Store the value from TARGET_OTA_ASSERT_DEVICE to a file

This is needed so it can be read in when re-signing a package to
allow for the proper device asserts.

Change-Id: I8f3bb491bbbaa4d2b827a45ef83f12c6c83e6712
Makefile: use correct md5 extension

* our servers and OTA uses md5 extensions not md5sum

Change-Id: I404349a3d6b48d83f45776a749f6c5a84565a047
Signed-off-by: houst0nn <houstonn@gmail.com>