Use GenericLifecycleObserver inside of LiveData

It is a bit more effective:
1. we don't generate unneeded class and methods
2. no reflection at all involved (previously we call constructor via it)
Test: refactoring.

Change-Id: I1edb45bd97d660e8a974d9721e989221044e4985
diff --git a/lifecycle/extensions/build.gradle b/lifecycle/extensions/build.gradle
index 9d33e55..79be36c 100644
--- a/lifecycle/extensions/build.gradle
+++ b/lifecycle/extensions/build.gradle
@@ -45,8 +45,6 @@
     compile libs.support.fragments, libs.support_exclude_config
     compile project(":lifecycle:common")
 
-    annotationProcessor project(":lifecycle:compiler")
-
     testCompile project(":arch:core-testing")
     testCompile libs.junit
     testCompile libs.mockito_core
diff --git a/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java b/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
index da5600c..4c0b7a4 100644
--- a/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
+++ b/lifecycle/extensions/src/main/java/android/arch/lifecycle/LiveData.java
@@ -354,7 +354,7 @@
         return mActiveCount > 0;
     }
 
-    class LifecycleBoundObserver implements LifecycleObserver {
+    class LifecycleBoundObserver implements GenericLifecycleObserver {
         public final LifecycleOwner owner;
         public final Observer<T> observer;
         public boolean active;
@@ -365,9 +365,8 @@
             this.observer = observer;
         }
 
-        @SuppressWarnings("unused")
-        @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
-        void onStateChange() {
+        @Override
+        public void onStateChanged(LifecycleOwner source, Lifecycle.Event event) {
             if (owner.getLifecycle().getCurrentState() == DESTROYED) {
                 removeObserver(observer);
                 return;