Introduce Response#value, an abstraction over Surveyor's value storage.

This commit also makes some other simplifications:

1. The value key in the JSON representation of a response should always
   be present, as a response always has a value.  Previously, this was
   not the case.

2. Answer#response_class is a string, not a symbol.  ActsAsResponse#as
   expects symbols, but is usually invoked with a response class as its
   first argument.  This commit resolves the string/symbol inconsistency
   for these methods and eliminates some unnecessary interning.
   (There's a #to_s in the case condition for backwards
   compatibility; at some point, that ought to be removed.)

3. "return case" in ActsAsResponse#as is redundant.

---

NB: there's no Response#value= here because the corresponding writer, IMO, only makes sense in NCS Core or other applications setting values from JSON representations of Responses.  If, however, that functionality is desired in Surveyor, I can add it to this pull request.