Ruby Depsolver: Catch exceptions and return detail to Erlang

### Motivation

The currently-deployed ruby depsolver code does not handle or deal with exceptions outside of the ones thrown by dep_selector during solving. Any exceptions returned will cause the worker to crash. When the worker crashes, the erlang process is left waiting for a reply for up to 10 seconds. We also get a spew of ruby backtrace in the erlang console log that isn't tightly coupled to any single response.

### Solution

Wrap the entire receive loop in a begin/rescue clause and return exception detail to Erlang. This will let the process return quickly, stay alive, and allow erlang to properly format the error message in the logs.