Merge pull request #261 from alphagov/fix-broken-modal-title

Tidy up bulk add success messages
Simplify shared error messages template

Just display the error if there is only one, rather than iterating
over the array anyway.
Merge pull request #264 from alphagov/simplify_error_message_template

Simplify shared error messages template
Fix host validations

Rails makes it far too easy to think we're doing validation right
when we're not:

- `validates` is used with ActiveRecord's pre-defined validation
  helpers, such as presence: true
- `validate` is used to call custom validation methods defined on a model

If we use `validate` with a pre-defined helper, it doesn't raise an
error but doesn't do the validation; we had this problem for all our
validations on the Host model.

This also adds a :with_its_aka_host trait to the host factory to
make it easier to create a host and the corresponding aka host together.
Validate that a non-aka host has no canonical_host_id
Merge pull request #265 from alphagov/validate_real_host_not_aka_of_another

Fix Host validations
Inform users of entire site redirects or archives

- This is to avoid users getting confused by a site having zero
  mappings, or trying to add mappings for globally redirected or
  archived sites.
- There are two new sites database table columns of type boolean -
  `global_archive` and `global_redirect`. False = not
  redirected/archived and True = redirected/archived.
Redirect the mappings pages to the site dashboard

- This is only for sites which are globally redirected or archived,
  so users cannot edit those site's mappings.
Use the existing `global_http_status` database column

- Remove the migration that added `global_archive` and
  `global_redirect` columns to the sites table, following a comment
  from @jennyd.
- Exclude `MappingsController#find_global` from the before_filter of
  `MappingsController#check_global_redirect_or_archive`, otherwise
  it fails on not finding `@site`.
Remove the italics around the redirected or archived hostname

- Following feedback from @fofr.
If a global HTTP status exists, don't show the Action column on hits
Add tests for the page redirection if there's a global archive/redirect
Make a Cucumber feature pass when `.action` doesn't exist in the table
Add Cucumber tests for globally archived/redirected sites
Make the flash message specific to redirection or archiving

- Fix a typo in MappingsController spec that made two blocks of tests
  identical - the archive test now actually tests an archive.
Make a step more specific to what it is testing
Don't assume that all sites globally redirect to GOV.UK
Add the global_http_status.blank? check to User#can_edit_site?

- Users should not be able to edit the site if it's got a global
  redirect or archive.
Use .update_attribute instead of .save in global_http_status features
Refactor the global_http_status tests in MappingsControllerSpec

- Make them shorter and cleaner through the use of it_behaves_like
  and shared_examples.
- Paired with @rgarner to do this.