Dynamically allocate soinfo-structs in linker

Request memory from the system when needed instead of having a fixed
array for soinfo structs. Note that malloc() et al can't be used in
linker, so use mmap() instead.

Change-Id: Ia77e6a835db0f4a0bfeccc4a6610b857459fd437
libc: Fix invalid macro

Change-Id: Ia0c1d81cecb2f05834842bf3e6a3cc9cb06e00c9

Conflicts:
	libc/arch-arm/bionic/strcmp.S