Rebase of #610 and also move emscripten up much higher in the hierarchy to
ensure that it doesn't have too much of a ripple effect on other platforms.
This involved moving down a good number of definitions, but hopefully was done
with care to not break anything!
- Copy 17 functions definitions from src/unix/mod.rs
to src/unix/bsd/mod.rs src/unix/haiku/mod.rs
src/unix/notbsd/linux/mod.rs and src/unix/solaris/mod.rs
- Add some functions to android that was cfged out
- Remove cf* and tc* functions implementations for android
(they are available with api >= 12, which was release in 2011)
Add waitid and related constants and types.
[`waitid`](http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitid.html) is a variation on `waitpid` with a marginally more convenient way of reporting the status, and a couple of handy
additional features, such as the ability to peek at an exit status without consuming it. It's in POSIX.1-2008 and should be available on all supported Unixes.
Along with it come the type `idtype_t` and the constants `WEXITED`, `WSTOPPED`, `WCONTINUED`, and `WNOWAIT`. The constants were already defined for unix/notbsd platforms.
The patch is currently incomplete: I'm pushing it to get CI to test platforms I don't have. Todo list is
* [x] Add a definition of `siginfo_t` to all platforms that don't have it.
* [x] Verify that the new constants are consistent for all \*BSD platforms.
* [x] Verify that `idtype_t` is consistent across the board.
* [x] Add `link_name` annotations for `waitid` if/as necessary.
It turns out that *only* FreeBSD and NetBSD proper have waitid, and that
Solaris' additional W* constants are totally different from everyone
else's, which tips me over from 'find some way to shoehorn this into
the top-level unix/mod.rs' to 'put it in the submodules, live with the
code duplication'.