Refactored protobuf framework, added loader

Included changes:

* Initial adapter interface spec
* Adapter loader to auto-load adapters
* Initial adapter NBI
* Better import support in chameleon, allowing more flexible
  protobuf structure (by organizing artifacts and service
  into separate proto files.
* Refactored voltha.proto to split things into logical proto
  modules.
* Some additional cleanup

Change-Id: I75f9883c6992148ea8df430bcdaebf85115fea4a
diff --git a/ofagent/grpc_client.py b/ofagent/grpc_client.py
index 5b6b0a8..a4475b5 100644
--- a/ofagent/grpc_client.py
+++ b/ofagent/grpc_client.py
@@ -27,7 +27,8 @@
 from twisted.internet.defer import inlineCallbacks, returnValue, DeferredQueue
 
 from protos.voltha_pb2 import ID, VolthaLogicalLayerStub, FlowTableUpdate, \
-    GroupTableUpdate, NullMessage, PacketOut
+    GroupTableUpdate, PacketOut
+from google.protobuf import empty_pb2
 
 
 log = get_logger()
@@ -81,7 +82,7 @@
 
         def receive_packet_in_stream():
             streaming_rpc_method = self.logical_stub.ReceivePacketsIn
-            iterator = streaming_rpc_method(NullMessage())
+            iterator = streaming_rpc_method(empty_pb2.Empty())
             for packet_in in iterator:
                 reactor.callFromThread(self.packet_in_queue.put,
                                        packet_in)