Make everywhereOnValuesM only apply functions once at top level

I am not sure about this, but it seems like `everywhereOnValuesM` was passing whatever top-level thing through the given function twice: once before processing (on the way down), and again on the way back up.  This presumably wasn't doing any harm, but it doesn't seem quite right either.  (`everywhereOnValuesTopDownM` does this too but it's correct there.)  (Noticed while trying to understand #733.)