Deprecation and binary compatibility (#861)

* Deprecation cycle
* Remove declarations that were deprecated and don't have any real use or migration
* Level.WARNING -> Level.ERROR level where possible
* Introduce binary compatibility validator to keep track of the API
diff --git a/build.gradle b/build.gradle
index 6c7dce5..ed4b197 100644
--- a/build.gradle
+++ b/build.gradle
@@ -71,6 +71,7 @@
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
         classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
+        classpath "org.jetbrains.kotlinx:binary-compatibility-validator:$validator_version"
 
         classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'
 
@@ -83,7 +84,11 @@
 
 // To make it visible for compilerVersion.gradle
 ext.compilerVersion = org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION
+apply plugin: 'binary-compatibility-validator'
 
+apiValidation {
+    ignoredProjects += ["benchmark", "kotlinx-serialization"]
+}
 
 allprojects {
     group 'org.jetbrains.kotlinx'