Introduce NcsNavigator::Core::Surveyor::SurveyTaker and use it in specs

This PR introduces a production-ready reimplementation of the SurveyCompletion module used in OperationalDataExtractor examples.  Since survey completion and prepopulation are really two instances of the same problem, I decided to unify them.  [The populator designed to solve issue 2744](https://github.com/NUBIC/ncs_navigator_core/blob/e42c7cb22405169202a0be1dc184a85d587e947a/app/models/response_set_prepopulation/handlebars_helpers.rb) makes use of this survey-taking code. 

This module also introduces a custom scope for Response mass-assignment.  The scope is meant to be used by all Cases code that does mass-assignment on Responses, but I have my doubts that'll work out.  Feel free to suggest alternative scope names.