further improvements for dup, dup2, pipe, open

changed to make it .net 3.5 compatible
pipe related code is wrapped in FEATURE_PROCESS
dup2 and open allocate lowest available fd
added os.closerange
os.open can open 'nul' file on windows
os.close closes underlying stream only if last fd is closed
added fd_test.py