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.
Refactor the _mappings.html.erb if conditional into helpers

- House the global_http_status archive and redirect explanation
  strings in en.yml.