MULTI DTB FIT and SPL_MULTI_DTB_FIT

The purpose of this feature is to enable U-Boot or the SPL to select its DTB
from a FIT appended at the end of the binary.
It comes in two flavors: U-Boot (CONFIG_MULTI_DTB_FIT) and SPL
(CONFIG_SPL_MULTI_DTB_FIT).

U-Boot flavor:
Usually the DTB is selected by the SPL and passed down to U-Boot. But some
platforms don't use the SPL. In this case MULTI_DTB_FIT can used to provide
U-Boot with a choice of DTBs.
The relevant DTBs are packed into a FIT (list provided by CONFIG_OF_LIST). The
FIT is automatically generated at the end of the compilation and appended to
u-boot.bin so that U-Boot can locate it and select the correct DTB from inside
the FIT.
The selection is done using board_fit_config_name_match() (same as what the SPL
uses to select the DTB for U-Boot). The selection happens during fdtdec_setup()
which is called during before relocation by board_init_f().

SPL flavor:
the SPL uses only a small subset of the DTB and it usually depends more
on the SOC than on the board. So it's usually fine to include a DTB in the
SPL that doesn't exactly match the board. There are howerver some cases
where it's not possible. In the later case, in order to support multiple
boards (or board revisions) with the same SPL binary, SPL_MULTI_DTB_FIT
can be used.
The relevant DTBs are packed into a FIT. This FIT is automatically generated
at the end of the compilation, compressed and appended to u-boot-spl.bin, so
that SPL can locate it and select the correct DTB from inside the FIT.
CONFIG_SPL_OF_LIST is used to list the relevant DTBs.
The compression stage is optional but reduces the impact on the size of the
SPL. LZO and GZIP compressions are supported. By default, the area where the
FIT is uncompressed is dynamicaly allocated but this behaviour can be changed
for platforms that don't provide a HEAP big enough to contain the uncompressed
FIT.
The SPL uses board_fit_config_name_match() to find the correct DTB within the
FIT (same as what the SPL uses to select the DTB for U-Boot).
Uncompression and selection stages happen in fdtdec_setup() which is called
during the early initialization stage of the SPL (spl_early_init() or
spl_init())

Impacts and performances (SPL flavor):
The impact of this option is relatively small. Here are some numbers measured
for a TI DRA72 platform:

                            +----------+------------+-----------+------------+
                            |  size    | size delta | SPL boot  | boot time  |
                            |  (bytes) | (bytes)    | time (s)  | delta (s)  |
+---------------------------+----------+------------+-----------+------------+
| 1 DTB                     |          |            |           |            |
+---------------------------+----------+------------+-----------+------------+
| reference                 |   125305 |          0 |     1.389 |          0 |
| LZO (dynamic allocation)  |   125391 |         86 |     1.381 |     -0.008 |
+---------------------------+----------+------------+-----------+------------+
| 4 DTBs (DRA7, DRA71,      |          |            |           |            |
| DRA72, DRA72 revC)        |          |            |           |            |
+---------------------------+----------+------------+-----------+------------+
| LZO (dynamic allocation)  |   125991 |        686 |      1.39 |      0.001 |
| LZO (user defined area)   |   125927 |        622 |     1.403 |      0.014 |
| GZIP (user defined area)  |   133880 |       8575 |     1.421 |      0.032 |
| No compression (in place) |   137472 |      12167 |     1.412 |      0.023 |
+---------------------------+----------+------------+-----------+------------+

Note: SPL boot time is the time elapsed between the 'reset' command is entered
and the time when the first U-Boot (not SPL) version string is displayed.
