Auction Close event on new/update/delete auctions

Modified the resque auction-closing job and pulled out all the timeout
and notifications parts into its own files. This was done to allow the
db to make calls to the timeout and notification module on its own.

This allows auctions created/updated/deleted from the api or view routes
to also fire an auction closing job. This job sends out the bidder
notification, winner notifications and invoices, and sets up the
webhooks.

The event timer keeps tracks of all auctions closing in the future by
keeping a map of auction ids to timer ids. When a new auction is created
and inserted into the event timer, a setTimeout is created for the
appropriate time and its timer id is added to the map as the value and
the auction's id as the key. When auctions are updated or deleted, the
auction's id can be used to retrieve the timer associated with it and
clear it.