[LIBS] Add generic buddy allocator library

This patch introduces a generic buddy allocator library which
can be used to instantiate a buddy allocator for managing
various kinds of memory such as heap, vapool, ram, etc.

The current buddy algorithm based heap implementation has
following runtime complexities:
vmm_malloc: O(log n)
vmm_free: O(n)

The generic buddy allocator library uses rbtree APIs to achieve
much better runtime complexities:
vmm_malloc: O(log n)
vmm_free: O(log n)

Shortly, we will use this new buddy allocator library wherever
possible in core code.

Signed-off-by: Anup Patel <anup@brainfault.org>