sim: Use a trait object for TlvGen

In preparation for adding support for differing manifest types, abstract
the TlvGen with a trait object `ManifestGen`.  This will allow alternate
implementations to be made.

Signed-off-by: David Brown <david.brown@linaro.org>
diff --git a/sim/src/image.rs b/sim/src/image.rs
index e41d1cd..3404ddd 100644
--- a/sim/src/image.rs
+++ b/sim/src/image.rs
@@ -19,7 +19,7 @@
 use simflash::{Flash, SimFlashMap};
 use mcuboot_sys::{c, AreaDesc};
 use crate::caps::Caps;
-use crate::tlv::{TlvGen, TlvFlags, AES_SEC_KEY};
+use crate::tlv::{ManifestGen, TlvGen, TlvFlags, AES_SEC_KEY};
 
 impl Images {
     /// A simple upgrade without forced failures.
@@ -662,7 +662,7 @@
     let slot_len = slots[slot].len;
     let dev_id = slots[slot].dev_id;
 
-    let mut tlv = make_tlv();
+    let mut tlv: Box<dyn ManifestGen> = Box::new(make_tlv());
 
     const HDR_SIZE: usize = 32;