allow changing socket timeout, prevent loops on failing getLine calls

In a scenario where an existing connection to beanstalk is timing out, the code would loop indefinitely during a getLine call. This makes the getLine method obey the socket timeout (as the read and write methods already do). This change also allows the socket timeout to be configurable when instantiating the Pheanstalk instance. This also fixes #13.

The exception handler in Pheanstalk#_dispatch will still attempt to perform one reconnection in the event of a failure before giving up completely.