Add handling for Iterables to Serialization

Currently any ConfigurationSerializable object that relies upon Iterables
for its serialization will fail to serialize correctly, and, in turn, fail to
deserialize properly.

To correct this, special casing has been added for Iterables(and Maps in a
few places) to ensure that all ConfigurationSerializable objects are
serialized and deserialized correctly.