Introduce BuxtonList

BuxtonList is a simple singly-linked list structure. It works in much
the same way as other implementations, supporting remove, append and
prepend operations.

It should be noted that the fastest way to use the list is via the
buxton_list_prepend function, which doesn't need to determine the
end of the current list as buxton_list_append does.

The code is kept simple with a clean API to support retasking.
BuxtonList will be used for the basis of a new Hashmap, ensuring that
all elements of the implementation are safe, clean, and efficient.

A BuxtonList is created by using a NULL BuxtonList pointer. If you
prepend or append to a NULL list, a new list head is then created.
The modification functions take a double pointer as they may modify
the original list head to point somewhere else when re-ordering.

It is recommended to use an individual list instance for allocated
data or stack data exclusively. By exlusively using one or the other,
you can benefit from being able to automatically free the entire list
and all of its data pointers. It is recommended to use the GCC attribute
macros provided, _cleanup_list, or _cleanup_list_all_ for lists
containing allocated data.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>