I think that unregistered visitor has been added by Don in 4.6.1 so that the special user_id 0 corresponds to an actual party. For granting permissions to non-registered users I would still use 'The Public'.
Regarding your privilege question: yes, that's the way it works. I wonder though if it wouldn't make more sense to define survey_take_survey as child of write, since entering data in a survey is quite different from just reading it, but then you would propably have to restrict editing the surveys to the admin privilege and I don't know if that is desired.
In any case, a table in the docs that lists every privilege and the effect it has when granted on the package_id itself and on the objects of the package, as well as info on default inheritance behaviour of the objects is always well appreciated by all users of your package 😉.