WIP: Improve the functionality homedir and expanduser.

Following [this](https://groups.google.com/forum/#!topic/julia-users/6BTNaIp3k8g) conversation with @StefanKarpinski I made some changes to homedir() and expanduser().

The biggest issue in my eyes is that I can't make a call to libc's getpwnam since it returns a struct. My guess is that I could do something similar to stat.jl (though I don't think libuv has support for this family of functions) but I'm not good enough at C to figure out how that side of things works.

The other big issue of course is how to handle multiple users on windows (and whether or not expanduser should do anything on windows), it has been suggested that an LDAP query would be the best course of action but I'm dubious.
i'm not certain about restrictions on usernames, but on posix, it is certainly possible to create paths with `:` ` `, `\n` and `\\` in the name. on windows, it appears to be mostly undocumented what could go into a file name, since if you prefix a name with `\\?\`, it disables the usual win32 path validation (http://msdn.microsoft.com/de-de/library/aa365247%28en-us,VS.85%29.aspx#maxpath)