stats: fix memory leakage when adding / deleting interfaces

This fixes two leaks in registering errors in the stats segment.
- The error name created by vlib_register_errors() was not freed.
- Duplicate error names (when interface readded) was added to the vector.

This fix also adds memory usage statistics for the statistics segment
as /mem/statseg/{used, total}

Change-Id: Ife98d5fc5baef5bdae426a5a1eef428af2b9ab8a
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
diff --git a/src/vppinfra/mem_dlmalloc.c b/src/vppinfra/mem_dlmalloc.c
index 99f1c04..7a53a8b 100644
--- a/src/vppinfra/mem_dlmalloc.c
+++ b/src/vppinfra/mem_dlmalloc.c
@@ -383,6 +383,21 @@
   clib_warning ("unimp");
 }
 
+void
+mheap_usage (void *heap, clib_mem_usage_t * usage)
+{
+  struct dlmallinfo mi = mspace_mallinfo (heap);
+
+  /* TODO: Fill in some more values */
+  usage->object_count = 0;
+  usage->bytes_total = mi.arena;
+  usage->bytes_overhead = 0;
+  usage->bytes_max = 0;
+  usage->bytes_used = mi.uordblks;
+  usage->bytes_free = mi.fordblks;
+  usage->bytes_free_reclaimed = 0;
+}
+
 /* Call serial number for debugger breakpoints. */
 uword clib_mem_validate_serial = 0;