In looking at the 2013 specification for rm
(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/rm.html),
it no longer says to stop processing if the path basename equals
"." or "..".
It says that the entries "." and ".." shall not be removed. It
also says rm <empty dir> shall behave like "rmdir" -- i.e. it will
delete empty directories.
But in the case of foo/. it would be expected to process child inodes
before processing the directory itself.
But step 4 on that page says that rm should remove empty directories
without requiring other special switches.