Add in_scope as a protected field in Maslow

This adds support for the "in_scope" field from the Need API. However,
because we want to add a separate action for this in the UI, this 
shouldn't be able to be changed by mass-assignment through the form.

This adds a new constant for protected fields, and reorganised some of 
the existing constants for fields to make it clearer how they work.

Protected fields:
- get read and write accessors
- are sent back to the Need API when the need is saved
- can't be assigned through the `update` method
- get assigned when an existing need is initialized in the same way that
read-only attributes are assigned
Convert blank strings to nil before sending to API

We currently send empty form fields as blank strings when we make a
request to the API. When we start to update other fields and save them
without mass-assignment, we're sending those same fields as nil instead.

We should make this at least somewhat consistent, so this commit changes
the as_json method so that blank strings are now converted to be nil
before we send them to the Need API.

This also updates the blank_need_request method in the test helper, and
a test which broke with this change.
Mark a need as out of scope for GOV.UK

This adds a button to a need to mark it as out of scope for GOV.UK. The
button makes a PUT request to a new action 'descope', which sets the
'in_scope' flag to false and redirects back to the need with a flash
status message.

At the present time, marking a need as out of scope is a non-reversible
action.
Correctly format the "false" value in revisions
Add method to Need to indicate if it's out of scope
Rename test helper method to make it clearer

click_on_first -> click_on_first_button

This highlights that the helper method is specifically looking for a
button.
Rename "Edit need" button to "Edit"

This is based on @fofr's design prototypes
Add dropdown menu and modal dialog for out-of-scope

This moves the "Mark as out of scope" button to a modal dialog, opened
from a new menu item called "More".
Make the out of scope notice bolder.
Merge pull request #52 from alphagov/mark-need-as-out-of-scope

Mark a need as out of scope