fsm: talloc + copy the 'id' passed into a FSM

The 'id' is used to generate the human-readable name of the FSM.
However, when the FSM creates slave FSMs later, the caller-passed "ID"
mgiht long be gone again (e.g. it was on stack memory).  So let's copy
the 'id' string to a chunk of dynamically-allocated memory at time of
FSM start to ensure we have it later when creating child FSMs.

Change-Id: Ib88a2c02c5c91f17b4ec1e9db57a06d6d66465fb
diff --git a/src/fsm.c b/src/fsm.c
index 6649b09..049663d 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -169,7 +169,8 @@
 	fi->log_level = log_level;
 	fi->timer.data = fi;
 	fi->timer.cb = fsm_tmr_cb;
-	fi->id = id;
+	if (id)
+		fi->id = talloc_strdup(fi, id);
 
 	if (!fsm_log_addr) {
 		if (id)