Do not declare #value as an attribute method.

Some revision between ActiveRecord 3.1 and 3.2 introduced a requirement
that attribute methods in ActiveRecord::Base descendants be backed by
columns.

I'm not sure what revision that is because I'm not interested enough to
bisect Rails for this, but I do know that you get a stack trace like
this without this commit:

    activerecord-3.2.13/lib/active_record/attribute_methods/time_zone_conversion.rb:60:in `create_time_zone_conversion_attribute?':
        undefined method `type' for nil:NilClass (NoMethodError)
    from activerecord-3.2.13/lib/active_record/attribute_methods/time_zone_conversion.rb:24:in `attribute_cast_code'
    from activerecord-3.2.13/lib/active_record/attribute_methods/serialization.rb:80:in `attribute_cast_code'
    from activerecord-3.2.13/lib/active_record/attribute_methods/read.rb:72:in `define_method_attribute'
    from activerecord-3.2.13/lib/active_record/attribute_methods/primary_key.rb:29:in `define_method_attribute'
    from activemodel-3.2.13/lib/active_model/attribute_methods.rb:267:in `block in define_attribute_method'
    from activemodel-3.2.13/lib/active_model/attribute_methods.rb:260:in `each'
    from activemodel-3.2.13/lib/active_model/attribute_methods.rb:260:in `define_attribute_method'
    from /Users/davidyip/Projects/ncs/core/lib/ncs_navigator/core/surveyor/response_value.rb:28:in `included'

The frame at the ActiveModel -> ActiveRecord transition point (i.e.
@ primary_key.rb:29) is executing code that was introduced in Rails @
e9fb6d04bdfbe3dfc4ba1a3cf442ec5d25764300.  Again, that's not
establishing causation, which means that this whole paragraph is really
worthless, but just in Case You Might Want To Know, etc.

More motivated detectives are welcome.

---

You might be wondering why @value_set is unconditionally set in #value=.
The reason is that calling #value= does indeed always set @value, even
if @value just happens to equal #value_from_response.

The write_value_to_record before_save hook goes through the typical
ActiveRecord attribute method machinery, which means that we still do
have the opportunity to check whether or not the set value is actually
different and do appropriate optimizations.