layers: DrawState layer can dump complete State to Graphviz dot file format

DrawState features "drawStateDumpDotFile(char* filename)" extension which will trigger a dot file to be dumped including PSO, Descriptor Sets, and Dynamic State.
As a convenience, DrawState will dump pipeline_dump.dot automatically on first draw only.  There are a few hacks to pull off the connection of Descriptor Set to the mapping, but for all of our tests this seems to be working.
Also fixed a few DrawState hangs due to mutex locking bugs.
diff --git a/layers/draw_state.h b/layers/draw_state.h
index 950107c..d505c46 100644
--- a/layers/draw_state.h
+++ b/layers/draw_state.h
@@ -56,3 +56,8 @@
     DRAW_END_RANGE        = DRAW_INDEXED_INDIRECT,
     NUM_DRAW_TYPES        = (DRAW_END_RANGE - DRAW_BEGIN_RANGE + 1),
 } DRAW_TYPE;
+
+//prototypes for extension functions
+XGL_VOID drawStateDumpDotFile(char* outFileName);
+// Func ptr typedef
+typedef XGL_VOID (*DRAW_STATE_DUMP_DOT_FILE)(char*);