completely isolated JitCompiler from the outer world behind a simple contract

def tryCompile(global: Global)(macroDef: global.Symbol, macroImpl: global.Symbol): Option[VirtualDirectory]
split tryCompile into two relatively independent parts
added a TODO note