Thread safety in EntList.

Under the assumptions that an EntList object cannot be inserted in between two EntList objects and cannot be removed from a list of EntList objects, making this class thread safe became trivially easy.
One mutex per EntList object was introduced to support appending of EntList objects. As this feature would be used by its subclass (MultList)
Thread Safety in SimpleList

Used sharedMtxP defined in EntNode class to protect EntNode list structure which was being accessed in functions of SimpleList class
Thread safety in MultList

The mutex defined in the superclass EntList was used in the function appendList.
Thread safety in Join-, And-, AndOr- List

sharedMtxP of EntNode class was invoked to keep the list of EntNode consistent whenever the EntNode list was being used multiple times in a function
Thread safety in OrList

Similar to AndList. However the mutex belonging to the superclass EntList was used to protect various counters (choiceCount, choice) used by OrList
Thread safety in ComplexList

Like the classes before, used sharedMtxP to protect the EntNode list whenver it was being iterated upon.
Also added a public mutex to protect the public next pointer. Resposibilty of using it will fall to the class which is using next pointer (ComplexCollect)
Thread Safety in ComplexCollect

A mutex was introduced to proctect the counter and the pointer to clists.
The insert and remove functions were tricky to make thread safe as clists may or may-not have been initialized. Hand-over-hand locking was used.