Reworked connection to use a single thread for state management.

Also disabled the SetConnection API call.

Stream cleanup.

Removed Unnescessary threads, there is now one thread per connection (handling response stream forwarding), and the existing thread is used to forward the request stream.
Renamed 'streams' to 'request'.
Renamed 'nbFrame' to 'requestFrame'.
Renamed 'sbFrame' to 'responseFrame'.

Changed handling of streaming requests.

Incoming & Outgoing streams are split when a connection becomes ready.
Added playback of non-streaming requests/responses for newly opened streams.

Late stream catchup fix & streaming call detection.

Fixed an issue where old streams were not being caught up with what they missed.
Streaming requests & responses are now detected based on the proto definitions.
Changed where the proto file is specified in the afrouter config (see afrouter/arouter.json for an example).

Fixed mutex copy.

Also tweaked some log statements.

Fixed field tag lint error.

Change-Id: I6e14039c27519d8d2103065258ff4302bc881235
diff --git a/afrouter/arouter.json b/afrouter/arouter.json
index 7739d65..5036402 100644
--- a/afrouter/arouter.json
+++ b/afrouter/arouter.json
@@ -3,7 +3,7 @@
     {
       "name": "grpc_command",
       "port": 55555,
-      "address": "",
+      "address": "localhost",
       "type": "grpc",
       "routers": [
         {
@@ -20,10 +20,10 @@
       "name": "vcore",
       "package": "voltha",
       "service": "VolthaService",
+      "proto_descriptor": "vendor/github.com/opencord/voltha-protos/go/voltha.pb",
       "routes": [
         {
           "name": "dev_manager",
-          "proto_descriptor": "voltha.pb",
           "type": "rpc_affinity_message",
           "association": "round_robin",
           "routing_field": "id",
@@ -273,7 +273,7 @@
   ],
   "api": {
     "_comment": "If this isn't defined then no api is available for dynamic configuration and queries",
-    "address": "",
+    "address": "localhost",
     "port": 55554
   }
 }