mem: Rename memmem module to mem

Currently the 'memmem' module does nothing but provide an implementation of
the memmem() function if it is missing from the standard C library.

However there are other functions (e.g. memrchr()) also missing from some
C library implementations, so rename the module to mem to allow future
inclusion of other functions.

This also updates the rfc822 module - the only existing user of the
memmem module - to use the new name.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
mem: Correct testcases

Currently the 'mem' module testcases use test/run.c even though they don't
rely on access to the module internals.  They're also missing an include
of mem.c, which has the effect that on systems with a C library memmem()
implementaiton, only that is tested, not the (re-)implementation in the
mem module itself.  This corrects that by moving run.c to api.c/

Additionally, the memmem() testcases don't cover the case where the
"needle" appears multiple times in the "haystack".  This patch also adds
such a test.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
mem: Implement memrchr()

The memrchr() function, which works like memchr(), but searches from the
back of the region to the front is implemented in the GNU C library, but
isn't standard.

This patch adds an implementation of the function to the mem module, when
it's not available in the system C library.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>