Adding an intrusive double linked list data structure

* The implementation is based on CCANN list implementation and of course
the linux kernel's intrusive linked list

* Unit tests for the intrusive list are also included