Revert "Revert "Channel Tracing Implementation; Part 1""

This reverts commit f2bea3725f8218777268decfd37c7b543f839d9f.
diff --git a/grpc.gyp b/grpc.gyp
index 403d328..fc9a45d 100644
--- a/grpc.gyp
+++ b/grpc.gyp
@@ -237,10 +237,13 @@
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
         'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/channel_trace.cc',
+        'src/core/lib/channel/channel_trace_registry.cc',
         'src/core/lib/channel/connected_channel.cc',
         'src/core/lib/channel/handshaker.cc',
         'src/core/lib/channel/handshaker_factory.cc',
         'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/channel/status_util.cc',
         'src/core/lib/compression/compression.cc',
         'src/core/lib/compression/compression_internal.cc',
         'src/core/lib/compression/message_compress.cc',
@@ -489,7 +492,6 @@
         'src/core/ext/filters/client_channel/resolver.cc',
         'src/core/ext/filters/client_channel/resolver_registry.cc',
         'src/core/ext/filters/client_channel/retry_throttle.cc',
-        'src/core/ext/filters/client_channel/status_util.cc',
         'src/core/ext/filters/client_channel/subchannel.cc',
         'src/core/ext/filters/client_channel/subchannel_index.cc',
         'src/core/ext/filters/client_channel/uri_parser.cc',
@@ -580,10 +582,13 @@
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
         'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/channel_trace.cc',
+        'src/core/lib/channel/channel_trace_registry.cc',
         'src/core/lib/channel/connected_channel.cc',
         'src/core/lib/channel/handshaker.cc',
         'src/core/lib/channel/handshaker_factory.cc',
         'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/channel/status_util.cc',
         'src/core/lib/compression/compression.cc',
         'src/core/lib/compression/compression_internal.cc',
         'src/core/lib/compression/message_compress.cc',
@@ -739,7 +744,6 @@
         'src/core/ext/filters/client_channel/resolver.cc',
         'src/core/ext/filters/client_channel/resolver_registry.cc',
         'src/core/ext/filters/client_channel/retry_throttle.cc',
-        'src/core/ext/filters/client_channel/status_util.cc',
         'src/core/ext/filters/client_channel/subchannel.cc',
         'src/core/ext/filters/client_channel/subchannel_index.cc',
         'src/core/ext/filters/client_channel/uri_parser.cc',
@@ -808,10 +812,13 @@
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
         'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/channel_trace.cc',
+        'src/core/lib/channel/channel_trace_registry.cc',
         'src/core/lib/channel/connected_channel.cc',
         'src/core/lib/channel/handshaker.cc',
         'src/core/lib/channel/handshaker_factory.cc',
         'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/channel/status_util.cc',
         'src/core/lib/compression/compression.cc',
         'src/core/lib/compression/compression_internal.cc',
         'src/core/lib/compression/message_compress.cc',
@@ -967,7 +974,6 @@
         'src/core/ext/filters/client_channel/resolver.cc',
         'src/core/ext/filters/client_channel/resolver_registry.cc',
         'src/core/ext/filters/client_channel/retry_throttle.cc',
-        'src/core/ext/filters/client_channel/status_util.cc',
         'src/core/ext/filters/client_channel/subchannel.cc',
         'src/core/ext/filters/client_channel/subchannel_index.cc',
         'src/core/ext/filters/client_channel/uri_parser.cc',
@@ -1015,10 +1021,13 @@
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
         'src/core/lib/channel/channel_stack_builder.cc',
+        'src/core/lib/channel/channel_trace.cc',
+        'src/core/lib/channel/channel_trace_registry.cc',
         'src/core/lib/channel/connected_channel.cc',
         'src/core/lib/channel/handshaker.cc',
         'src/core/lib/channel/handshaker_factory.cc',
         'src/core/lib/channel/handshaker_registry.cc',
+        'src/core/lib/channel/status_util.cc',
         'src/core/lib/compression/compression.cc',
         'src/core/lib/compression/compression_internal.cc',
         'src/core/lib/compression/message_compress.cc',
@@ -1207,7 +1216,6 @@
         'src/core/ext/filters/client_channel/resolver.cc',
         'src/core/ext/filters/client_channel/resolver_registry.cc',
         'src/core/ext/filters/client_channel/retry_throttle.cc',
-        'src/core/ext/filters/client_channel/status_util.cc',
         'src/core/ext/filters/client_channel/subchannel.cc',
         'src/core/ext/filters/client_channel/subchannel_index.cc',
         'src/core/ext/filters/client_channel/uri_parser.cc',
@@ -1388,12 +1396,14 @@
         'grpc',
       ],
       'sources': [
+        'src/proto/grpc/channelz/channelz.proto',
         'src/proto/grpc/health/v1/health.proto',
         'src/proto/grpc/testing/echo_messages.proto',
         'src/proto/grpc/testing/echo.proto',
         'src/proto/grpc/testing/duplicate/echo_duplicate.proto',
         'test/cpp/end2end/test_service_impl.cc',
         'test/cpp/util/byte_buffer_proto_helper.cc',
+        'test/cpp/util/channel_trace_proto_helper.cc',
         'test/cpp/util/create_test_channel.cc',
         'test/cpp/util/string_ref_helper.cc',
         'test/cpp/util/subprocess.cc',