More changes to improve DSLogger

An extra tiny improvement to the implementation and performance of **DSLogger** that includes the following:
- Lazy calculation approach to creating log record strings. They are now formed only when the actual buffer contents is requested (but each log string is created only once and then it's "cached" till the log record is pushed out from the buffer.).
- Clustering adjacent log records from the same function is done only in debug mode. It does not seem to be that useful in production due to less frequent updates done to the log. [Shall the team really miss the clustering of log records in production builds, it is extremely easy to remove the #ifdef's].
- In production builds a low-priority queue is now used to handle adding log records. That should help to do the main actions and updates even faster while it does not cause any notable delays to log updates when the user monitors them, as (again) the frequency of log updates is low in production builds.

Any questions or comments, let me know, guys.