Simplify troubleshooting by reporting on node calls on failure

This change collects information about each node invocation and wraps
any exception during node invocation in a GraphExecutionException with
the additional data.
This sequence is a bit confusing with two return paths. Better to collect the call only if collectCallInformation is true, then just return.