Clean up <stdlib.h> slightly.

Interestingly, this mostly involves cleaning up our implementation of
various <string.h> functions.

Change-Id: Ifaef49b5cb997134f7bc0cc31bdac844bdb9e089
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 0060ea3..4cb288d 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -25,15 +25,16 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _STDLIB_H_
-#define _STDLIB_H_
+
+#ifndef _STDLIB_H
+#define _STDLIB_H
 
 #include <sys/cdefs.h>
+#include <xlocale.h>
 
-#include <stddef.h>
 #include <alloca.h>
-#include <strings.h>
-#include <memory.h>
+#include <malloc.h>
+#include <stddef.h>
 
 __BEGIN_DECLS
 
@@ -173,4 +174,4 @@
 
 __END_DECLS
 
-#endif /* _STDLIB_H_ */
+#endif /* _STDLIB_H */
diff --git a/libc/include/string.h b/libc/include/string.h
index f0bed10..4ca77ae 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -36,6 +36,10 @@
 
 __BEGIN_DECLS
 
+#if defined(__USE_BSD)
+#include <strings.h>
+#endif
+
 extern void*  memccpy(void* __restrict, const void* __restrict, int, size_t);
 extern void*  memchr(const void *, int, size_t) __purefunc;
 extern void*  memrchr(const void *, int, size_t) __purefunc;