Refactor handling read-only fields in Need model

Currently, read-only fields have to be defined in three places and it's 
cumbersome when we need to add more.

This commit refactors the Need model so that it now stores a list of 
read-only fields as an array. On initialize, we can iterate over this 
to assign the values to instance variables of the same name.

To do this, I've renamed the @need_id instance variable to @id, and added
an alias so that both reader methods continue to work.
Merge remote-tracking branch 'origin/master' into refactor-read-only-need-attributes

Conflicts:
	app/models/need.rb
Simplify assigning attributes from the API

This refactors the Need model so that, when we are initializing a Need
from an API response (ie. when the 'existing' argument is true), we now
filter the attributes so that only the writable fields are passed into
the update method. This prevents the ArgumentError exception from being
raised. We maintain the old behaviour when the need is being created or
updated so that invalid form fields will continue to raise an exception.

This also splits apart the 'assign_and_filter_values' method into two
separate methods which have a clearer intent and are no longer
destructive to their provided arguments.

- 'assign_read_only_attributes' assigns the instance variables for the
  attributes we consider "read only" from the API.
- 'filtered_attributes' slices the provided hash to only return keys
  present in the FIELDS constant.

I've moved around a few comments and added more comments around the
initialize method.
Merge pull request #49 from alphagov/refactor-read-only-need-attributes

Refactor handling read-only fields in Need model