feature/initial-dev - First working version of the producer/consumer
program.  Don't have the tests completed yet, and need to implement the
conditional wait mutexes.

. new file:   include/data_entry.h
  . struct for the data to be put on the blocking_queue

. new file:   src/consumer.cpp

. modified:   Makefile
  . Added the compilation of the consumer.o file.

. modified:   include/consumer.hpp
  . Added the class definition, inheriting from thread.

. modified:   include/producer.hpp
  . Refactored the blocking_queue pointer to be templated for a
    data_entry struct.

. modified:   include/tags

. modified:   include/thread.hpp

. modified:   src/cpp-unit-test-example.cpp

. modified:   src/producer.cpp

. modified:   src/tags

. modified:   src/thread.cpp

. deleted:    src/blocking_queue.cpp
  . Not necessary as all of the implementation was folded into the .hpp
    file for the blocking_queue.
feature/initial-dev - Finished development of the functional
producer/consumer example.  Includes the usage of conditional variables
for synchronization and broadcasts instead of sleep calls from the
tutorial that got me started on the right track.

. modified:   Makefile
  . Added the compilation of the conditional_var class

. modified:   include/blocking_queue.hpp
  . Reimplemented the size, push, and pop functions to remove the usage
    of the mutex, because all calls to these functions are synchronized
    from the calling code.
  . The mutex member is now a pointer.
  . Modified constructor implementation to accept mutex * mtx argument.

. modified:   include/consumer.hpp
  . Added conditional_var * c member.
  . Refactored the constructor for an additional conditional_var
    argument.
  . Added function: virtual void shutdown();

. modified:   include/mutex.hpp
  . Added accessor: pthread_mutex_t * get_mutex();

. modified:   include/producer.hpp
  . Added private members:
    . mutex * mtx;
    . conditional_var * c;
  . Refactored the constructor to accept mutex and conditional_var
    pointer arguments
  . Added destructor definition

. modified:   include/thread.hpp
  . Refactored shutdown function:
    from: void shutdown();
    to:   virtual void shutdown();

. modified:   src/consumer.cpp
  . Refactored the run function.  It now uses the conditional_var for
    waiting.
  . Added implementation for the shutdown function.

. modified:   src/cpp-unit-test-example.cpp
  . Refactored such that the producer and consumer instances are now
    referenced from a global pointer to an array.  This was done to
    enable us to reference the instances from a signal callback
    function.
  . Added some constants to store the max number of producers, consumers
    and the maximum number of items to store on the queue.

. modified:   src/mutex.cpp
  . Added implementation of the get_mutex function.

. modified:   src/producer.cpp
  . Refactored the run function to utilize the mutex and conditional var
    properly.

. modified:   src/thread.cpp
  . Removed default constructor, as it is now defined in the header

. new:
  . src/.gitignore
  . include/.gitignore

. new: class to encapsulate the pthread_cond_t conditional variable C
  API.
  . include/conditional_var.hpp
  . src/conditional_var.cpp

. deleted:    include/tags
. deleted:    src/tags