move trampoline outside of engine.go where it is used

While gapstone compiles fine with gc, I noticed it doesn't work gccgo. I reported it to the Go team at https://github.com/golang/go/issues/9294 and it turns out we can't declare trampoline() and use it within the same file because of a chicken and egg problem. The solution is to move the declaration of trampoline into its own file, then it compiles both with gc and gccgo.