StepFailureData lets the error passed in be empty, but then when the event log query goes to create the event, it throws if there is no error set.
This diff makes the server more resilient to empty errors, and changes the frontend to handle step failure events with no serialized error data (falling back to rendering the message of the event instead of the full error, which we have pretty good frontend support for already)
However, before we should land this, we should gain understanding of why this serverside graphql error seems to *completely break the dagit server and stop it from serving any more request until the server is restarted*, at least when it is thrown in certain situations.