Make Attachment base class abstract

We are no longer creating attachments without the STI "type" attribute
set in the app, which allows us to reorganise attachment code such
that the file-related code is in FileAttachment and HtmlAttachment
contains code related to html attachments. The base class will now
raise an exception if an attempt is made to save an instance without
a specific type set.

Note that the attachment_data association is still on the base class,
otherwise the file-related scopes would not work on associations,
e.g. edition.attachments.with_filename(filename).
Fix bug that causes exceptions when file is blank

Downcasing a non-existant filename was causing problems.
Don't kill attachment file cache

The attachments controller code was killing attachment_data params
unless a file was present, which didn't play nice with the carrierwave
file caching feature. This moves the code for handling nested
attributes out of the controller and into the model.
SpecialistSector model and migration

It will be used to tag editions to specialist sectors
Add cuke for specialist sector tagging
Add SpecialistSector.options_for_select method

Fetches the list of specialist sectors from the content api and builds
it into a structure usable as a list of grouped options by the Rails
select helper.
Show specialist sectors select on edition form
Save specialist sector tags to editions
Rename mainstream_content_api to content_api

It better reflects what it is and what it's for.
Use Whitehall.content_api from SpecialistSector

Also stub out the tags method it uses.
Use real content_api for specialist sector tests

Whitehall.content_api is a faked double in development and test
environments. For the specialist sector tests we explicitly want to test
against a real content_api adapter with stubbed web requests.
Use specialist_sectors in RegisterableEdition

Previously it was looking through mainstream categories to find oil and
gas tags.

Also mixin Edition::SpecialistSectors into DetailedGuide.
Fix SpecialistSector validation for new editions

If you assign specialist_sector_tags to a new (unpersisted) edition they
won't get an edition ID and so won't be valid. This change makes them
check for the presence of edition instead and manually assigns it in
specialist_sector_tags=
Data migration for moving to Specialist Sectors

Removing Oil and Gas Mainstream Categories while moving the relted Detailed
Guides to Specialist Sector Tags
Mixin specialist sectors to consultation, collection + policy

Also adding the partial to those 3 forms along with detailed guides
Revert "Exclude sectors from detailed guide category lists"

This reverts commit b5a667d0febcd20212c56e863ab959ec58262b72.

Specialist sectors no long piggy back on mainstream categories so this
workaround isn't needed.
Change industry_sector to specialist_sector

Panopticon and Content API now use specialist_sector.
Mixin SpecialistSectors to the base Edition class

All content formats should be taggable to specialist sectors. Whether
and how they are displayed in specialist browse is yet to be determined.

Also update all edition forms to include the specialist sector fields.
Remove unused CSS. Fix styling

  - Add bold tag around sign up description
  - Add gutters to sign up text
  - Increase font size to 19 (from 16)
  - Fixed checkbox alignment on desktop
Validate atom feed extensions