LogEvent(string, map) and requested unit test

@dkorolev PTAL
It's completely thread-safe to use. If you are speaking about "mixing" output from different threads:
- On Android and iOS this implementation is guaranteed to work by using their specific logging functions.
- On C++ platforms it's not critical for now, and write is done in one place only (destructor).