Implement return types for both functions and function annotations.
Default to type sig match score of 1 when a function signature has no params.
Default to score of 1 for empty sigs *only* when both sigs being matched are empty.
Implement type annotations for expressions.

This can be used to chain together multiple function calls with different return and argument types. A possible case is to distinguish forward and reverse seqs.
Fix bug resulting from nesting inline calls in other inline calls.

Was fixed by storing replacement tmps only in the outer-most inlining call.
Fix bugs arising from nesting calls to the same inlining function.