Pass function signature to codegen impl
Refactor lowering and codegen api
Update travis-ci