new function is_exe() makes existing which() more correct

1. Separate which tests into test_which.py

2. Expand on tests/test_which.py.
Mainly, regarding os.defpath, os.environ['PATH'], absolute, relative, and symlinks.

3. Provide new 'is_exe' function used by 'which()'
As noted by bug report http://bugs.python.org/issue14706, "This is not a Python bug. os.access() is just a wrapper around the POSIX access() function" http://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html
" If any access permissions are checked, each shall be checked individually, as described in XBD File Access Permissions, except that where that description refers to execute permission for a process with appropriate privileges, an implementation may indicate success for X_OK even if execute permission is not granted to any user. "
For clarity, I think there should be an explicit `return False` as the final fallback. It works without because it implicitly returns None, which is False-y, but 'explicit is better than implicit'.