Evaluate returned argument before catching any pending exceptions.
Handle zero (falsy) catch and finally locations correctly.

This is unlikely ever to matter, because catch and finally blocks can't
really start at the beginning of the function.
Identify exceptions by tryEntry.firstLoc when calling context.catch.

Previously we were passing tryEntry.catchEntry.firstLoc as the location
identifying which thrown value to retrieve, but tryEntry.firstLoc is more
reliable because it always exists.