Add pry to both development and test environments

This is a personal tweak to add a debugging tool to the `email-alert-api` for
those who practice Pry Driven Development :)

Create a joint group for gems that use both development and test environments.
Handle a topic already existing on GovDelivery's side.

Previously, when we attempted to create a subscriber list, if the topic already
exists with GovDelivery, the creation would fail "silently" and we'd get a bad
"SubscriberList" record stored in the email-alert-api.

Now, it will recognise that the list already exists, and populate the data
locally (using the list topics API) so that the error condition won't be
encountered again.

In addition, if *any* error condition is encountered with GovDelivery, an
exception will now be raised rather than it being swallowed silently.
Merge pull request #46 from alphagov/create-list-if-not-exists

Create SubscriberList if it exists on GovDelivery but not locally.
Validate tags are all arrays

Previously, if you sent a tag that had a value that was not an array
(e.g. a string), then you’d get a hard to debug error caused by
JSON.parse failing.

This adds a simple validation of the params on the controller.
Merge pull request #43 from alphagov/ensure_tags_as_arrays

Validate tags are all arrays
Put the error code from govdelivery in errors

Quite a few of the potential GovDelivery errors are documented as having
the same descriptive string, but different error codes.  Therefore,
let's put the error code into our exception messages, so we'll be able
to distinguish these.
Merge pull request #47 from alphagov/include-govdelivery-code-in-errors

Put the error code from govdelivery in errors
Add a JSON healthcheck to email-alert-api

This healthcheck includes a few things:

- an `ok` message, which tells us that the app is responding
- a nested hash called `checks`, which contains:
  - `queue_size`: this is the length of the unprocessed Sidekiq queue,
     which can be graphed to indicate that our API is backed up
  - `queue_age`: a delta in seconds of the age of the oldest item in the
     Sidekiq queue, which can be used to indicate that there's a problem
     processing messages

Both of the metrics represented here are intended to be monitored using Nagios.
Merge pull request #48 from alphagov/add-healthcheck

Add a JSON healthcheck to email-alert-api
Install foreman gem
Start the app using foreman
Merge pull request #49 from alphagov/feature/update-startup-scripts

Update startup scripts
Sort arrays used for comparison

Previously, you'd have to make sure your arrays of tags to search for were in
the same order as when they were saved.

Now they can be in any order and the comparison will still return them.
Ensure tests capture tag arrays in different order
Handle nil tagsets

If the tags don't exist in the record being compared we shouldn't throw an
error, we should just assume it doesn't match.

Side benefit: fixes CI.
Merge pull request #50 from alphagov/sort-subscriber-list-comparisons

Make where_tags_equal insensitive to array ordering
Slightly more descriptive logging on notification worker
Merge pull request #51 from alphagov/better-logging

Slightly more descriptive logging on notification worker
Rename `create_or_sync_subscriber_list` method.

This method doesn't actually do the sync, it happens
afterwards in the controller action, leading to
developer confusion (mine).
Merge pull request #52 from alphagov/clarify-subscriber-list-controller

Rename `create_or_sync_subscriber_list` method.