Remove libc from std

These wrappers are bound to a specific libc, and they don't need to be part of
libstd.
Change how the readdir/opendir hack works
Fix fallout from std::libc separation
rustc: Pass --enable-long-section-names to gcc

This was quite a curious bug on windows, and the details can be found in the
comment I added to src/librustc/back/link.rs
auto merge of #13315 : alexcrichton/rust/libc, r=alexcrichton,me

Rebasing of #12526 with a very obscure bug fixed on windows.