* dead code elimination phase 1
* combine dead code elimination with return fix code
* remove last instruction tracking from compiler code (not needed)
* fix a symbol table block scope bug
* add some more tests
- add type infos to VM error messages
- add 'Name' to UserFunction objects
- add 'expectErrorString' to VM tests
- replace vm.expectError() with vm.expectErrorString() to make it more explicit
- add source map info to VM error messages
- optimization in function calls
- add file/line/col info to compiler errors
- change stdlib module to be loaded from VM (instead of compiler) so they can be properly loaded after the source is compiled into binary
- VM can take builtin modules optionally