Better Proguard support

Annotation processor has been rewritten so all model classes can now be obfuscated fully.
Realm class has been made a lot simpler due to this as well.

Further work:
- Consider if compiler and Realm should be split into two projects (afaik only way to get rid of -dontwarn javax.**)
- ~~Consider shading JavaWriter to get rid of Square warning and to reduce future compatibility issues (see https://github.com/google/dagger/issues/79)~~
- Explore possibilities to get RealmProxyMediatorImpl even though it has been obfuscated (possible through annotations).
- ~~Performance test comparing it to previous implementation + if we use HashMap instead of switch.~~

If all 3 things above are implemented we can support proguard without **any** additional configuration.


This can be accessed by many threads at the same time. Should it be wrapped in an AtomicReference?