WIP on dynamically adding language-specific methods to bytecode at compile-time

Summary of progress:
* Main method in adaptor-utils which knows about 3 dynamic languages: Clojure, JRuby and Groovy
* Leverages @benc's work to pick methods to add overloading for and then rewrites methods to use: groovy.lang.Closure, clojure.IFn, org.jruby.RubyProc
* Unit test that checks bytecode to check that all methods are added
* Gradle task 'deleteDynamicJar' which calls this main method, moves it on top of the old rxjava-core JAR, and removes the now-duplicated dynamic JAR

Left to do:
* Gradle work to make 'gradle jar' do the work of 'deleteDynamicJar' above
* This implies that the old 'gradle jar' task needs to be changed, as well
* Using the new rxjava-core JAR requires all of Clojure, JRuby, Groovy to be available as a runtime dependency - this is bad, and we don't want to impose this on users.
* Rewriting bytecode currently uses a method body of println("Hello world"); - of course it should delegate to the proper language adaptor's way of calling functions