Allow separate generation / transmission of exception notices

This refactors `Squash::Ruby.notify` into 3 methods:

`Squash::Ruby.generate_exception` takes the exception and user_data and generates the JSON notification.

`Squash::Ruby.transmit_exception` sends the exception blob on the wire

`Squash::Ruby.notify` uses the refactored methods to generate and send the exception, with no API changes from the original.

This lets us generate the exception in the rescue block but send them to squash in a background job, freeing up our app workers sooner.

Also gets rid of the `.ruby-version` as I don't think it was intentionally added to this repo?