procdesc: improve pdfork flags

Use an unsigned long, and store the whole flags
for better future compatibility.
procdesc: improve comments/documentation
procdesc: rename task_struct.pd to task_struct.procdesc
procdesc: Cope with absent task

The task underlying a process descriptor may get
reaped (e.g. via explicit waitpid(2) call, or by
pdwait4(2) on a dup'ed FD).  In this case the task
pointer will be NULL, so cope with this.
procdesc: remove redundant quiet_forked flag

The existence of a process descriptor indicates whether or not
to do process-descriptor specific functionality
procdesc: procdesc tasks ineligible for wait

Wildcard wait operations should not find tasks that
have an extant process descriptor.
procdesc: use existing wait queue for task death

No need for a new process descriptor-specific wait queue
head in the task structure; just re-use the existing wait
queue head in the signal_struct (which is normally used
for wait4(2)-like blocking).
procdesc: watch for zero pid not NULL task

The process descriptor holds a reference to the task_struct object
so it will never disappear out from underneath.  However, if the
task is reaped the mapping from pid to task disappears, and that's
the scenario to watch out for.
procdesc: reinstate checks for pdkill

Need to do some of the checks/interactions that are present in
check_kill_permission(), specifically:
 - check for valid signal number
 - let the audit system see the signal
 - let the LSM see the signal.
procdesc: RCU protect procdesc back-pointer

The back-pointer from the task_struct to the owning
process descriptor struct file gets cleared when the
last process descriptor is closed.  This clear operation
might race with an attempt to read the pointer,
specifically when the process exits and attempts to set
the mode field of the corresponding (anonymous) inode.