Adding a GrpcGraph that communicates with a remote graph through GRPC.

1) Added asynchronous GRPC client that communicates with the service
through completion queues
2) Added a stream observer that observes output streams and relays the
data back to the engine. The stream observer also reports graph stoppage
back to the graph by notifying it when all output streams are closed.
3) Added a test with a sample synchronous service to test out the core
of the algorithm implemented.

Bug: 145227010
Test: Added a unit test
Change-Id: I88667558865f66cb2fcb08a2c78008ab58cda603
diff --git a/computepipe/example/Runner.cpp b/computepipe/example/Runner.cpp
index b46345e..bbea0b1 100644
--- a/computepipe/example/Runner.cpp
+++ b/computepipe/example/Runner.cpp
@@ -52,10 +52,11 @@
 
 int main(int /* argc */, char** /* argv */) {
     std::shared_ptr<RunnerEngine> engine =
-        sEngineFactory.createRunnerEngine(RunnerEngineFactory::kDefault, "");
+            sEngineFactory.createRunnerEngine(RunnerEngineFactory::kDefault, "");
 
     std::unique_ptr<PrebuiltGraph> graph;
-    graph.reset(PrebuiltGraph::GetPrebuiltGraphFromLibrary("libfacegraph.so", engine));
+    graph.reset(android::automotive::computepipe::graph::GetLocalGraphFromLibrary("libfacegraph.so",
+                                                                                  engine));
 
     Options options = graph->GetSupportedGraphConfigs();
     engine->setPrebuiltGraph(std::move(graph));