Bugfix TA dev kit

* Small bugfixes to bring the mk-files for TA dev kit up to date.
* Compile TAs with -fpie
* Add fix_ta_binary to fix the absolute relocation issue in TA header
enable_mmu functions renamed in cpu_enable_mmu
Get value of gpd.tee.arith.maxBigIntSize from libutee

The property gpd.tee.arith.maxBigIntSize was implemented in TEE core by
tee_svc_sys_get_property() which was returning a constant taken from the
crypto module (LTC_MAX_BITS_PER_VARIABLE / 2).
The correct value is TEE_MAX_NUMBER_OF_SUPPORTED_BITS from libutee.
This commit makes libutee return the appropriate value directly (without
calling the TEE core) and deletes the property from the syscall.
Additionally, this removes the unjustified dependency of tee_svc.c on
<tee_ltc_wrapper.h>.
Cleanup
Cannes / H410 support

Support STMicroelectronics chip H410 "cannes".
Is compiled using
    PLATFORM=cannes make
Create util.h to rearrange define macro
tee_acipher_rsadorep: fix handling of zero-padding in output

- Always remove leading null bytes in output buffer (previously this was done
only for PK_PRIVATE keys)
- Leave one null byte when rsa_exptmod() output is all zeroes (do not return
an empty buffer)
- Fix output buffer length check (take padding into account)
TEE_ROUNDxxx renamed in ROUNDxxx in libutee

This change is to have the same macro names in core
part and libutee part
Make more common implementation of orly2 and cannes platforms

This will prepare PLAT_FLAVOR of orly2 / cannes
Reentrancy fixes

Before this patch: The normal world was only allowed to enter
secure world with one thread at a time.

After this patch: The normal world may try to enter secure world
with as many threads as it likes, secure world will return busy
when no more threads can be allowed. Secure world still only allows
one active thread at a time, but during RPC another thread may enter
and do some work. This is needed for cancellation to work.

* Adds a mutex that waits in normal world if busy
* Adds a new RPC service to wait in normal world
* Imports bitstring.h from FreeBSD to aid mutex implementation
* Adds a critical section in tee_ta_init_session
* Unmaps TA before RPC exit and maps it again on return to handle
  rescheduling of threads during RPC
* Doesn't clear a1-a3 when returning busy
* Bugfixes vector_std_smc_entry

This patch depends on the "Allow parallel entries to secure world"
patch in optee_linuxdriver.
plat-orly2 and plat-cannes merged in plat-stm

PLATFORM_FLAVOR is used to distinguish orly2 and cannes

Change-Id: Iaed89451f704120e29b0b0adb83627f11bf9df48
Cosmetic fixes for build output

By default, the OP-TEE build shows abbreviated output similar to the Linux
kernel. This commit fixes a number of deviations/inconsistencies.

- Always print a command in uppercase, followed by the target file.
- Make sure commands and file paths are nicely aligned, with two leading spaces
to make command output/errors better stand out.
- Remove some duplicate slashes in file paths. We use the following rule:
variables that hold directory names such as $(arch-dir) or $(platform-dir)
always have a trailing slash. The 'subdirs' and 'incdirs' variables used in
sub-makefiles are an exception because doing otherwise would needlessly
clutter the sub-makefiles.
[WIP] Add crypto provider internal API (struct crypto_ops).

THIS IS WORK IN PROGRESS. Builds, untested.

- Add core/include/tee/tee_cryp_provider.h:
    * struct crypto_ops: contains the functions that were previously in
      core/include/tee/tee_{acipher,authenc,cipher,hash,mac}.h. These
      files were deleted.
    * [tee_]cipher_init{,2,3}: keep only one form (the previous cipher_init3).
    * [tee_]authenc_update_aad: remove unused 'mode' parameter.
    * Declare tee_cryp_init(), called from init.c:init_tee_core().
- Move tee/tee_{acipher,authenc,cipher,hash,mac}.c to
  lib/libtomcrypt/src/tee_ltc_provider.c (new file)
- Add core/tee/tee_cryp_provider.c (implements tee_cryp_init())
[WIP] Move tee_crypt_init() to tee_svc_cryp.c and delete tee_cryp_provider.c.
[WIP] Minor cleaning
[WIP] Add bignum ops, define structs for keys (bignum *), rework some LTC keygen funcs.
[WIP] Add new versions of asymmetric crypto functions. Do not delete old ones yet.

Instead of taking pointers to TomCrypt-defined key structures, the new
forms take pointers to key structures defined in our provider API. For
instance: rsa_keypair_s, rsa_public_key_s, etc.
[WIP] Remove remaining direct dependencies of tee_svc_cryp.c on LibTomCrypt / libmpa

- Use _NEW forms of asymmetric crypto functions from tee_cryp_provider.h
(the ones that take pointers to rsa_keypair_s, rsa_public_key_s, etc.
with pointers to generic 'bignum's
- Delete unused 'populate' functions: tee_populate_rsa_key_pair(), etc.
- Update crypto provider API as needed
Still needs some cleaning.
[WIP] Delete unused code and merge tee_ltc_wrappper.c into tee_ltc_provider.c