Pass strings between methods as std::string instead of char *
Pass strings between methods as std::string instead of char *

- Fixes "basic_string::_M_construct null not valid" exception
  aborting program, because WCharToUtf8() returned NULL
  in some cases, and NULL was being fed to string constructor.
- Fixes memory leak because memory allocated with calloc()
  in WCharToUtf8() was not being freed anywhere
- Fixes undefined behavior because GetEnumeratorName() returns
  pointer to stack memory, that goes outside of scope while
  pointer still is being used.

Closes #381
Closes #382

Change-type: patch

resin-io/drivelist,resin-io/drivelist