Limit the levels printed for exception data

When pprint'ing the exception data for an exception cause, limit the
depth of data printed to avoid errors on circular data structures.

The maximum printed level is configurable via the optional `print-level`
argument to the stacktrace op, which must be an integer if passed.