Make all() use less memory in scalar context

Also fixes a subtle bug if file names would evaluate to false.
document using defined to check iterator return values
test all in scalar context
document behavior of ->all in scalar context
drop duplicate test of all in scalar context