Added test harness for serializing maps of structs.  Currently, test fails because not emitting custom map deserializers for each user-defined struct.
Reusing generic list deserialization code in emit, rather than re-writing from scratch each time.
Emit now does code gen for deserializing maps with struct values.
Equality comparison of floating point is generally a bad idea because can lose precision depending on order of ops, etc. Using an approximately equal test instead.