Rescue RequestTimeout before other exceptions

Since RestClient::RequestTimeout inherits from RestClient::RequestFailed it was being caught by the later rescue block
and re-raised.  This caused the server to be unable to process any new work if one of the first nodes in the list ever
went away.

When they did so, the server would attempt to distribute work to them, it would encounter a  RestClient::RequestTimeout,
it would re-raise it and then the WorkUnit#distribute_to_nodes would never complete.
require 'pathname'

Even though it's part of the std lib, it's not included by default.  It's lack was causing the "crowd" command to be unusable.
WorkUnit.distribute_to_nodes inside defer block

This way the server will complete the request as soon as possible before
it takes the time to parcel out work to the nodes.
Use a back-off timeout for periodic node check-ins

This way the nodes won't hammer the server if it's too overloaded to respond
Don't distribute tasks immediately upon check-in

Oftentimes a node isn't prepared to immediately receive a new connection once it checks in,
causing a  Errno::ECONNRESET exception.
Log the exception received so it's easier to debug

Otherwise nodes just seem to mysteriously vanish
update gitignore.
Typo