uevent: Allow multiple uevent listeners from the same process

The netlink socket created by uevent_init sets the nl_pid to the
current PID. nl_pid must be unique per-process, however it does not
have to do with the PID. From the documentation:

"
For a user-space process, nl_pid
is usually the PID of the process owning the destination socket.
However, nl_pid identifies a netlink socket, not a process.  If a
process owns several netlink sockets, then nl_pid can be equal to the
process ID only for at most one socket.
"

In use cases where a single process calls uevent_init more than one
time, the second one will always fail. This patch sets the nl_pid
to 0, which lets the kernel pick its own unique identifier as per the
documentation:

"
If the application sets it to 0, the kernel takes
care of assigning it.  The kernel assigns the process ID to the first
netlink socket the process opens and assigns a unique nl_pid to every
netlink socket that the process subsequently creates.
"

The behavior stays the same for the first socket but will also succeed
in subsequent calls.

Change-Id: I6fa74adc9d5835ff39b86187799998111fc12001
wifi: add presto changes

Import wifi changes from presto repository

Change-Id: I515f5171d22fbbc132f0f0504c33153671b6e1af
wifi: Add option for a device-specific wifi

This patch adds TARGET_CUSTOM_WIFI which can be used to replace the
standard wifi.c with a custom implementation without breaking things
for devices that assume default functionality. (Derived from
Gingerbread:566d2f2)

Change-Id: Ief8c51c4c33f879c7771af8769c83f1f89979034