dependency injection pattern in ByteCodeCompiler allows more flexible use of VM and ELF compiler classes, fixed comments, renamed some methods.