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. "
sure, find idea, was following "sh" module function of same name, https://github.com/amoffat/sh/blob/master/sh.py#L194