Detect unreachable code at end of function definition

Since go/types checks return requirements for functions,
we can assume the function is valid. Thus, the lack of
terminator instruction at the end of a function means
no return was required. This means either the return is
implicit (no results), or the end of the function is
unreachable.

We don't attempt to distinguish in the case of no results.

Fixes #35