libc bindings for glob.h

only tested on linux/x86_64, but i got the values for other platforms
from their system header files.

no bindings for win32, because win32 doesn't include glob.h.

also, glob() takes a callback for error handling, but i'm just making
this a *c_void for now, since i don't know how to represent c calling
back into rust (if that's even currently possible).
add a higher level glob() function to os

this could probably use expansion - it just uses all of the default
options, which is usually what we want, but not always. maybe add a
separate function that takes more options?
glob_t should be public on all platforms
auto merge of #5832 : doy/rust/glob, r=graydon

This adds low level bindings for `glob()` and `globfree()` in `libc`, and adds a static `glob()` function to `Path` which uses those. It has only been tested on Linux/x86_64, but I looked up header file definitions for other platforms, so they should hopefully work in theory. Windows doesn't have these functions, so that is currently unimplemented, although ideally `Path::glob()` could be reimplemented in terms of Windows primitives instead, at some point in the future.

I'm not sure what a good way to test this would be - it requires looking at the actual filesystem, so I'm not sure where a safe place to do that would be. I'd be willing to add some if people have recommendations.