Add implementations of memcmp and memcpy to ulib
This is necessary because gcc may generate calls to memcmp, memset, memcpy, and memmove when compiling with -nostdlib.
This is necessary because gcc may generate calls to memcmp, memset, memcpy, and memmove when compiling with -nostdlib.