Basic, half-working function exit trace.
Simplify trace signature construction.
Fix cascading two modifiers.

We can't really process one morphed code then pass it to the next morphing.
This will falsify the location/range of the original function as it may be
shifted by the extra instrumentation.

The solution is to collect first all the code fragments to be inserted and
then apply them at once.
Fix getting the function name in a call expression.
Upon a failure, also show the original source.
Fix exit trace inserted before entrance trace.

Simply add a minor offset to the exit trace position so that fragment
sorting ensures that entrance trace will be inserted first.
Simplify function collector.
Support function exit tracing of the return statement.