Final version of Memory Allocator

Custom memory allocator makes system calls using mmap.
Returns a pointer to the allocated memory based on size. Allocation is
mostly two types: regions and caches where caches have several sizes
and each cache have several slots.