Pull request provides support for several builtins:
- strcpy
- strncpy
- strchr
- memcmp
- memcpy
- memset
- strlen
- strcmp
- strncmp
- memmove

Added function to AArch64CGFunc :
Operand *AArch64CGFunc::SelectIntrinsicOpWithNParams(IntrinsicopNode &intrnNode,
PrimType retType, std::string name)
as a sequel to AArch64CGFunc::SelectIntrinsicOpWithOneParam(...). Can be used to process intrinsics with any number of arguments, also can use SelectIntrinsicOpWithNParams instead of SelectIntrinsicOpWithOneParam

Improved void AArch64CGFunc::SelectLibCall. Now can be used for libcalls with operands has different types. (Every type has to be specified for every operand)

Here is a sample test:

#include <stdio.h>
int main() {
char* str = __builtin_alloca(4);
char* s = __builtin_alloca(4);
int a[3] = {3, 4, 5};
int b[3] = {2, 3, 4};
printf("%i\n", __builtin_strlen("qwe"));
printf("%s\n", __builtin_strcpy(str, "zxc"));
printf("%s\n", __builtin_strncpy(str, "asd", 2));
printf("%i\n", __builtin_strcmp("asd", "qwe"));
printf("%i\n", __builtin_strncmp("qweg", "qwdf", 2));
printf("%i\n", __builtin_strlen(__builtin_strcpy(str, "asd")));
printf("%s\n", __builtin_strchr(str, 's'));
printf("%i\n", __builtin_memcmp(a, b, 12));
__builtin_memcpy(a, b, 12);
printf("%i\n", __builtin_memcmp(a, b, 12));
printf("%s\n", __builtin_memset(s, 'q', 3));
return 0;
}