Minor opt.
Missing weaver markers.
Minor opt.
Missing weaver markers.
Setup context CL to Boot during weaving.

If the thread holding its own classloader (with parent Boot)
tried to load (and weave) h2o class, then instances of API annotation
was created inside javassist by calling:

ClassLoader cl = Thread.currentThread().getContextClassLoader();
return Proxy.newProxyInstance(cl, new Class[] { clazz }, handler);
(see javassist.bytecode.annotation.AnnotationImpl#make )

So annotation instance (in our case) was created based on the thread's
context classloader (which is in case of Scala REPL != Boot).
Hence, the call api = (API) ctf.getAnnotation(API.class);
was failing on ClassCastException (API class was loaded by Boot
classloader, but annotation instance was created based on API loaded
by a different classloader).

The change has no effect on normal H2O run since we
do not change classloaders among threads, but it will
handle correctly the case for Scala REPL.
Merge branch 'MM_weaver_patch'