Update the RPC layer

This commit merges the 'tforg/topics/ts-rpc' into integration. The
change overhauls the RPC layer implement the following changes:
  - allow RPC compatibility check be adding versioning to the RPC layer
  - allow multiple memory shares between FF-A endpoints. (This was a
     concerning limitation for NWd endpoints where multiple clients
     may operate).
  - add service discovery support. After this change all SPs use the
    same FF-A UUID. This means the FF-A UUID identifies the protocol and
    not the service as before. As a result, to locate a service further
    discovery is needed on top of FF-A discovery. This is implemented
    in the RPC layer for performance reasons.
  - update discovery implementation and add the new discovery step
    needed after service locator locates the SP.
  - change protocol encoding types to be represented as dedicated
    interfaces of an SP. This removes encoding type identifiers and
    replaces these with service UUIDs.
  - add RPC ABI documentation

Change-Id: I7fbb28b17d44b04578595c8725674624297f01a0
Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>