Reworking and hardening of the BL3-1 interface for alternative Trusted Boot Firmware v2

This patch is a rework of branch #89 Vk/tf issues#133 which implements the new spec for BL3-1 intialisation and passing of params between firmware images and also adds optional support for making BL3-1 as a reset vector