Cache fixes

Fixes bugs, including fixes removed from NetworkAtomics (whoops). See individual commit messages.
The chpl_task_yield is not needed for correctness - the atomic_fence is. If the processor just hung on to the old values in flags - say, in L1 cache, then they would never be updated even if the remote side ran PUTs. It works now because Intel has stronger memory consistency than some architectures and the cache for remote data doesn't cache these values because they are local.

The chpl_task_yield will make the current task not monopolize the processor, since we typically include chpl_task_yield in waitFor it seems like a good idea, but I don't have testing evidence about it improving anything.