Bug 1637: Change Rpc actor calls to async

Changed RemoteRpcImplementation and RpcBroker to use async calls and
modified/created unit tests.

Added an RpcErrorsException to transfer RpcError info on failure. This
is now used in lieu of ErrorResponse to communicate failures.

Change-Id: Ib0bbda1867caff9b6c584b9b8a9b336f8acf53d7
Signed-off-by: tpantelis <tpanteli@brocade.com>
Initial clustering feature

Besides the clustering feature changes a couple of other changes
had to be made to the distributed data store and remote rpc modules
to make the solution work with karaf

1. The akka.conf in sal-clustering-config has now been changed so that
it works in a single node cluster out of the box. Specifically the hostnames
have been set to 127.0.0.1 and the member role has been set to member-1

2. The distributed-data-store and the remote-rpcconnector now load akka
configuration from the configuration/initial folder. The positive thing about
this is that even in a multi-node cluster one does not need to pass the location
of akka.conf on the command line. The negative thing about this is that you
cannot change the location from which the akka configuration can be picked up.
Though this should be ok because we specifically pick modules.conf and
module-shards.conf from the configuration/initial folder as well.

3. The Protobuf bundle has now been wrapped and a Dynamic Import has been
added to it so that it can deserialized specific protocol buffer messages

4. The RestConfProvider was not written to shutdown correctly. While this is
not normally an issue it does become an issue when the clustering feature is
loaded for the first time because in that case the RestConfProvider may need
to be shutdown by the config sub-system

Change-Id: I1701ae8e9508c82779483963fb73b6af91095d7d
Signed-off-by: Ed Warnicke <eaw@cisco.com>
Signed-off-by: Moiz Raja <moraja@cisco.com>
Merge "Initial clustering feature"
Merge "Bug 1637: Change Rpc actor calls to async"