Optee a80 porting

Optee-os add a80 platform support.

This request have three patchs, The patchs summary:
1.gic driver add gic_cpu_init function, mainly for secondary cpu secure stage initialization,
2.Make uart driver more portable, add common console.h and console basic functions,
3.Add plat-sunxi support, the initial version, running on A80 Optimus board.

All patchs only tested on A80 Optimus board, Due to the lack of platform.
Mayeb the uart driver patch should be test on vexpress platform.
The TEESMC interface is designed to be generic and Trusted OS agnostic. It defines the basic functions needed to communicate with secure world, while allowing extensions for different implementations. 

Shared memory function: As I see it should the normal world be the owner of shared shared memory, secure world shouldn't need to tell normal world which memory to use as shared memory. Having the shared memory addresses hardcoded in secure world will be a headache when configuring a platform. Somehow must the DTB be updated to exclude the shared memory only for the driver to map the exact memory that was excluded at boot, it doesn't make sense.

So TEESMC32_ST_FASTCALL_GET_SHM_CONFIG should only be a temporary workaround until we have fixed our driver. If you don't want to borrow from the ST extensions you can copy what you need into the Allwinner extensions instead. The driver will check UUID and version of the API and pick the right function based on that.

Platform specific functions:
There's enough bits available in a0 to allow for platform specific functions. But if you'd rather have all Allwinner specific functions grouped under one SMC function ID you can do that in the Allwinner extensions. One thing to keep in mind here is that in some implementation there might be an hypervisor that need to inspect the SMC calls and possibly modify passed pointers, so the hypervisor shouldn't need to do too much digging to find the pointers.