Add terminal-notifier dev dependency and update Gemfile

This patch updates the Gemfile dependencies and adds a development
dependency on terminal-notifier which is used by irbtools.
Add a log message when a card already exists

Without this patch the app does not let the user know when a job does
not take any action because a found card already exists.  The problem
happens in all jobs that implement the default behavior of the
BaseTrelloJob.

This patch addresses the problem by logging a message with the card
short id and URL.
Search multiple boards and archive a card when a PR is closed

Without this patch the app takes no action when a pull request is
closed.  This is a problem because we often need to manually manage the
card on Trello.

This patch addresses the problem by searching for the card on the
primary board containing the list ID.  If the card is not found, the
app additionally searches for cards located on the boards identified by
the TRELLO_BOARDS environment variable which is expected to contain a
comma separated list of board identifiers.

This patch does not make any effort to figure out why the pull request
was closed.  It simply finds the card associated with the pull request,
adds a comment, and archives the card.

Finally, the behavior of the find_card method is changed by this patch.
An identifier located inside the parentheses and matching the regular
expression /\(PR .*/\d+\)/ will be extracted from the name passed to
find_card.  This substring will then be compared against all the card
titles on the multiple boards.
Store the payload data in PullRequest#message

Without this patch the original payload data of the pull request event
is not stored along with the delayed job.  This makes it difficult to
change the behavior of the job classes in a manner that is compatible
with already stored jobs.

This patch addresses the problem by storing the entire de-serialized
object as an instance variable of the PullRequest instance.  The
instance variable data is accessible through the message method.
Methods that implement job behavior should directly read the message
data and not other instance variables in order to be backwards
compatible with the data stored in the jobs table.