Added test for opening multiple files in parallel

The test fails with a string error
Added a compatible wrapper for mutex lock / unlock

This wrapper will invoke the corresponding lock or unlock function std::thread is supported or a dummy function if not.
Hence the wrapper can be easily be used by functions irrespective of whether std::mutex is supported or not.
Removed static variable (string str) in sectionReader.cc

The function sectionReader::getDelimitedKeyword( delims ) was changed to sectionReader::fillDelimitedKeyword( delims, string& ).
This was done to make reading from the file stream thread safe.
Removed static variable nextFreeInstance

This was done my making the static variable an object variable. Hence now it is possible that different threads give header instances present in different file, same instanceID
lazyInstMgr::registerDataSection semantics changed

Keeping in mind the thread safety, registring a data section is now a two step process. In first step an entry is reserved, by filling it with a null value, and getting its index. In the second step the null value is replaced with the new value.
The destructor has been changed keeping in mind that a _dataSection entry might also be a null. Destroying _instanceTypes data structure in the destructor
Added openFileSafely( fname ) functionality

Plenty of mutexes were used for this purpose. Fine grain locking addInstance in function.
The code passes the test for thread safety in opening multiple files.
Finer grain locking in loadInstance

Also doing double checking in the thread safe version for better performance in case of many threads.