refactor: pass compiler options as a hash

This is preparation for supporting more and more compiler options - specifically we should be able to configure how we get a hand on a runtime instance in a generated template. Having more and more compiler options passed as an argument would increase number of function arguments and make it harder to manage.