Revise preevents to hide them more.

Preevents considered confusing in the default case, so
users must ask for them explicitly where they are wanted.
Since they are more explicit, require use of std::move()
for translation to events.