Queue implementation

This is a simple FIFO implementation using reference counting and
copy on write.

It implements the basic queue operations:
- Head: Return a pointer to the first element without dequeuing it.
- Enqueue: Adds one element to the end of the queue.
- Dequeue: Dequeues the first element of the queue and returns a
pointer to it.

In addition, it implements the basic administrative functions:
- New
- Destroy
- Copy
- Count
- IsEmpty

Incorporated most of the feedback received after the pull request was
published.
RefCount improvements

Removing some error codes and replacing them with ProgrammingError.
RefCount is such an internal and basic structure that there is no
reason that any operation should fail, any problems are caused by
misuse.
Modifying List after RefCount modifications

Some minor adjustements were required after the removal of error
codes from RefCount.
Modifying Buffer after RefCount modifications

After the removal of error codes in RefCount, Buffer needed to be
adjusted accordingly.
Modifying Queue after RefCount modifications.
Modifying BufferList after RefCount modifications
Merge pull request #1166 from cduclos/queue-implementation

General libutils modifications and adding Queue