drm_hwcomposer: reimplement Dump for DrmDisplayCompositor

Also fixes hwc_dump sometimes failing to null terminate its output buffer.

TEST=dumpsys SurfaceFlinger

Change-Id: Ibf93cfd496a07a9375d78a8b239c2c7876aff986
diff --git a/hwcomposer.cpp b/hwcomposer.cpp
index 6a0f4cd..ac7fdac 100644
--- a/hwcomposer.cpp
+++ b/hwcomposer.cpp
@@ -330,7 +330,9 @@
 
   ctx->drm.compositor()->Dump(&out);
   std::string out_str = out.str();
-  strncpy(buff, out_str.c_str(), std::min((size_t)buff_len, out_str.length()));
+  strncpy(buff, out_str.c_str(),
+          std::min((size_t)buff_len, out_str.length() + 1));
+  buff[buff_len - 1] = '\0';
 }
 
 static int hwc_prepare(hwc_composer_device_1_t *dev, size_t num_displays,