Split protobuf into its own project

We don't want core to depend on protobuf.
diff --git a/compiler/build.gradle b/compiler/build.gradle
index 6c7710d..274f985 100644
--- a/compiler/build.gradle
+++ b/compiler/build.gradle
@@ -21,8 +21,8 @@
 }
 
 dependencies {
-  compile project(':grpc-stub'),
-          libraries.protobuf
+  testCompile project(':grpc-protobuf'),
+              project(':grpc-stub')
 }
 
 binaries.all {
diff --git a/core/build.gradle b/core/build.gradle
index 4b2e196..30bf385 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -5,8 +5,7 @@
 description = 'gRPC: Core'
 
 dependencies {
-    compile libraries.protobuf,
-            libraries.guava,
+    compile libraries.guava,
             libraries.jsr305
 }
 
diff --git a/examples/build.gradle b/examples/build.gradle
index db9e4cd..35f4667 100644
--- a/examples/build.gradle
+++ b/examples/build.gradle
@@ -15,7 +15,7 @@
 dependencies {
     compile project(':grpc-core'),
             project(':grpc-netty'),
-            project(':grpc-okhttp'),
+            project(':grpc-protobuf'),
             project(':grpc-stub'),
             libraries.jsonp
 }
diff --git a/integration-testing/build.gradle b/integration-testing/build.gradle
index af10ed3..feb8f80 100644
--- a/integration-testing/build.gradle
+++ b/integration-testing/build.gradle
@@ -21,6 +21,7 @@
     compile project(':grpc-core'),
             project(':grpc-netty'),
             project(':grpc-okhttp'),
+            project(':grpc-protobuf'),
             project(':grpc-stub'),
             project(':grpc-testing'),
             libraries.junit,
diff --git a/protobuf/build.gradle b/protobuf/build.gradle
new file mode 100644
index 0000000..2aa9d19
--- /dev/null
+++ b/protobuf/build.gradle
@@ -0,0 +1,7 @@
+description = 'gRPC: Protobuf'
+
+dependencies {
+    compile project(':grpc-core'),
+            libraries.protobuf,
+            libraries.guava
+}
diff --git a/core/src/main/java/io/grpc/proto/DeferredProtoInputStream.java b/protobuf/src/main/java/io/grpc/proto/DeferredProtoInputStream.java
similarity index 100%
rename from core/src/main/java/io/grpc/proto/DeferredProtoInputStream.java
rename to protobuf/src/main/java/io/grpc/proto/DeferredProtoInputStream.java
diff --git a/core/src/main/java/io/grpc/proto/ProtoUtils.java b/protobuf/src/main/java/io/grpc/proto/ProtoUtils.java
similarity index 100%
rename from core/src/main/java/io/grpc/proto/ProtoUtils.java
rename to protobuf/src/main/java/io/grpc/proto/ProtoUtils.java
diff --git a/settings.gradle b/settings.gradle
index c36ba1c..a36c5e9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -3,6 +3,7 @@
 include ":grpc-stub"
 include ":grpc-auth"
 include ":grpc-okhttp"
+include ":grpc-protobuf"
 include ":grpc-nano"
 include ":grpc-netty"
 include ":grpc-testing"
@@ -16,6 +17,7 @@
 project(':grpc-stub').projectDir = "$rootDir/stub" as File
 project(':grpc-auth').projectDir = "$rootDir/auth" as File
 project(':grpc-okhttp').projectDir = "$rootDir/okhttp" as File
+project(':grpc-protobuf').projectDir = "$rootDir/protobuf" as File
 project(':grpc-nano').projectDir = "$rootDir/nano" as File
 project(':grpc-netty').projectDir = "$rootDir/netty" as File
 project(':grpc-testing').projectDir = "$rootDir/testing" as File