Generate XML with nokogiri not string substitution

The XML messages to be sent to govdelivery were being generated by
performing string interpolation with some template messages.  This was
prone to content injection, and also liable to generate invalid XML.

Using nokogiri's XML builder should more reliably generate valid XML,
and the code to use it is pretty clear too.

Story: https://www.pivotaltracker.com/story/show/81921620
Add equivalent-xml Gem

This is needed for checking that the XML requests and responses talking
to GovDelivery are correct, without being so fragile that whitespace
changes break the tests
Move creating GovDelivery XML to a separate file

To keep things cleaner, and make them more testable, this moves the code
which generates the XML requests to be sent to GovDelivery into a
separate GovDelivery.RequestBuilder module.
Require webmock for spec_helper

The next commit adds a test which requires webmock but not the rails
helper, so move the requirement for webmock into spec_helper instead.
Test GovDelivery::Client with webmock

This adds some tests of the GovDelivery::Client class.  The responses
are based on a recording of actual responses from GovDelivery (with some
identifiers changed).
Merge pull request #44 from alphagov/safer-xml-generation

Safer xml generation
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.