Rework BOARD_EGL_NEEDS_LEGACY_FB implementation

The problem with the window format boils down to a circular
dependency that makes service startup hang, so skip a round of
queues-to-window-composer to avoid it but keep using regular
Surface objects as windows, instead of replacing them with
native windows.

Change-Id: I6fed0fe04928df370c298c68ac1eb6d5b5cfb214
Signed-off-by: Grarak <williye97@gmail.com>

Conflicts:
	include/gui/Surface.h
	libs/gui/Surface.cpp
DisplayDevice: Backwards compatibility with old EGL

From 4.1 to 4.2, the display subsystem was reworked to
use SurfaceTextureClient/BufferQueue instead of
FramebufferNativeWindow for the framebuffer itself.

Unfortunately, some legacy EGL libraries make assumptions
that any framebuffer device will be FramebufferNativeWindow.

These EGL libraries will fail when used in 4.2 as if the
framebuffer is not FramebufferNativeWindow, they will
try to dequeue more than one buffer at a time, which
will cause a hang of the graphics subsystem.

This allows use of FramebufferNativeWindow to keep
legacy EGL implementations happy.  Confirmed EGL
implementations that need this include but are
not limited to:

Set BOARD_EGL_NEEDS_LEGACY_FB to use

Tegra2/3 ICS EGL
Mali400 ICS EGL (Allwinner A10)
Mali400 Jellybean (4.1) EGL (Samsung Exynos4)

Original implementation by OndraOrg of XDA:
http://forum.xda-developers.com/showpost.php?p=34469675&postcount=19

Change-Id: I74005cf6753b3c9bfb4c1e32fb641f5167787917
Signed-off-by: Grarak <williye97@gmail.com>

Conflicts:
	services/surfaceflinger/Android.mk
hax: Split the exynos4/tegra legacy code paths

They hang up at different places, and require different fixes.
Tested on t3 and e4

Change-Id: I46257a7e9e6b6e093a5cb92eaaaef4bdd0435a12
Signed-off-by: Grarak <williye97@gmail.com>

Conflicts:
	services/surfaceflinger/Android.mk
gui: Allow devices to disable fence sync

Signed-off-by: Michael Bestas <mikeioannina@gmail.com>

Change-Id: Ifecc7af579bfde9d0a7daaaf528ea0773ce6ceb2