Wrap common network errors and add an exception base class

In using the gem, I found we were rescuing both `OpenSRS::BadResponse` and `OpenSRS::Timeout` in many places, not to mention common `Errno` stuff.

This PR adds an exception wrapper around common network errors (similar to what's being done with `Timeout::Error`) and updates all the exceptions to descend from a common base class. This way, code that just cares about success/failure only has to rescue `OpenSRS::OpenSRSError`.