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/protos/schema_pb2.py b/protos/schema_pb2.py
index f5f17d2..537ba02 100644
--- a/protos/schema_pb2.py
+++ b/protos/schema_pb2.py
@@ -13,14 +13,16 @@
 _sym_db = _symbol_database.Default()
 
 
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
   name='schema.proto',
   package='schema',
   syntax='proto3',
-  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile\"\r\n\x0bNullMessage2D\n\rSchemaService\x12\x33\n\tGetSchema\x12\x13.schema.NullMessage\x1a\x0f.schema.Schemas\"\x00\x62\x06proto3')
-)
+  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\x1a\x1bgoogle/protobuf/empty.proto\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile2G\n\rSchemaService\x12\x36\n\tGetSchema\x12\x16.google.protobuf.Empty\x1a\x0f.schema.Schemas\"\x00\x62\x06proto3')
+  ,
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
@@ -66,8 +68,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=24,
-  serialized_end=89,
+  serialized_start=53,
+  serialized_end=118,
 )
 
 
@@ -97,38 +99,13 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=91,
-  serialized_end=135,
-)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='schema.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=137,
-  serialized_end=150,
+  serialized_start=120,
+  serialized_end=164,
 )
 
 _SCHEMAS.fields_by_name['protos'].message_type = _PROTOFILE
 DESCRIPTOR.message_types_by_name['ProtoFile'] = _PROTOFILE
 DESCRIPTOR.message_types_by_name['Schemas'] = _SCHEMAS
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
 
 ProtoFile = _reflection.GeneratedProtocolMessageType('ProtoFile', (_message.Message,), dict(
   DESCRIPTOR = _PROTOFILE,
@@ -144,13 +121,6 @@
   ))
 _sym_db.RegisterMessage(Schemas)
 
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
 
 import grpc
 from grpc.beta import implementations as beta_implementations
@@ -171,7 +141,7 @@
     """
     self.GetSchema = channel.unary_unary(
         '/schema.SchemaService/GetSchema',
-        request_serializer=NullMessage.SerializeToString,
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
         response_deserializer=Schemas.FromString,
         )
 
@@ -192,7 +162,7 @@
   rpc_method_handlers = {
       'GetSchema': grpc.unary_unary_rpc_method_handler(
           servicer.GetSchema,
-          request_deserializer=NullMessage.FromString,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
           response_serializer=Schemas.SerializeToString,
       ),
   }
@@ -222,7 +192,7 @@
 
 def beta_create_SchemaService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
   request_deserializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.FromString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
   }
   response_serializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.SerializeToString,
@@ -236,7 +206,7 @@
 
 def beta_create_SchemaService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
   request_serializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.SerializeToString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
   }
   response_deserializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.FromString,