Improve Survey api to make more generic

Currently the API is mainly used for user setup flow. We need to decouple the User and Account updates so this API can be used for other surveys in the future.