Handle /proc/self/fd and /dev/fd.

Parrot was trying to open these file descriptors as normal files. However,
these descriptors might actually refer to a native file, like a socket, so
Parrot should pass the open on to the kernel unmodified. In the case of a
Parrot file descriptor, we want to create a new file description (pfs_pointer).

readdir on /proc/self/fd also now omits special file descriptors (like the
channel). This might not be the best solution. In an ideal scenario, the tracee
can't see the channel at all. However, the channel does use up one of its file
descriptors and that has side-effects (e.g. dup2 to the channel file descriptor
will inexplicably fail, from the application's perspective). Any fix for this
is probably involved and I'm not aware of any application negatively affected
by this.  The best solution for now seem to be to hide the channel in
/proc/self/fd results. [I *have* seen applications try to close the channel fd
before, because they found it via readdir on /prof/self/fd.]

Fixes #598.