feat(transpiler): implement optional params
feat(transpiler): add support for arrow functions

fixes #28
fix(transpiler): only call transform/visit when defined

Our custom ParseTree classes should not expect that every
transformer/visitor defines the methods to transform/visit them.
chore(transpiler): show filepath when error happens
test(transpiler): add spec for instanceof
refactor(transpiler): instanceof