SI-7181 Prepare to remove duplicated finally blocks

As a first step towards fixing 7181, this commit improves the
comments and variable names around generating try/catch/finally blocks
in GenICode and adds a test verifying the current functionality of
try/catch/finally blocks
SI-7181 Eliminate unnecessary duplication of finally blocks

The main body of a try and each exception handler were getting a copy of
the finally block for the "normal" flow case (i.e. where they don't
throw an uncaught exception or use "return" to exit early). But that's
not necessary.

With this commit the try body and each exception handler can all jump
to the same copy of the finally block on a normal exit.

A byte code test is included to ensure we're getting fewer copies of
the finally block.