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.
Revert "Move IPADDRESSES to the EvalContext struct"

This reverts commit 6d7360fba7bf855b672ec2f0a9443978d7cafa22.
Revert "Don't use IPADDRESSES in cf-execd-runner subprocess"

This reverts commit d64c8f7612a5c91bd2fe0c73be9b00d19835673f.
Revert "Don't use global IPADDRESSES in addr_lib"

This reverts commit 00ed4d6b96a56b614d596e43b74471a07ec8edca.
contrib/cfengine-code-style.el: Fix file header and footer lines for ELPA compatibility

- Fix header line
- Add footer line
- Add Commentary section
- Add Code section
- Change semicolons of header comment lines from three to two
Merge pull request #1172 from yasuyk/fix-for-elpa

contrib/cfengine-code-style.el: Fix file header and footer lines for ELPA compatibility
Modifying Queue after RefCount modifications.
Modifying BufferList after RefCount modifications
Merge pull request #1166 from cduclos/queue-implementation

General libutils modifications and adding Queue
Constify.
Promise constification.