do not warn on BEGIN time fd<3 handles. They can be always reopened.
undo mark_package recursion to avoid the compiler running into deep recursion errors, and also to better catch intermediately added new packages. This avoids half-compiled packages, like Encode missing define_alias, or recursiopn problem with Moose and Pod::Simple. Add new packages to the mark_package queue, loop over the queue multiple times until there are no more new entries to save.