Parsing empty or missing XML Elements

Updated the XML parsing logic for empty XML elements.

Two major changes:

* Self-closing or empty XML string value elements now return an empty string, and no longer result in a null value.

* When parsing structure members, if the element is not present in the output, then a default `[]` or `{}` are not created for list or map elements.

The motivation for these changes are to permit data returned from AWS responses to round-trip back again as input data.

By populating empty lists and maps (`[]`, `{}`), structure was created where the service did not indicate. This had the negative side-effect of response structures could not be used as request params without the possibility creating new empty elements.

In the same vein, services were returning empty xml elements to indicate empty strings. These were getting lost in the translation to nil, which could trigger errors for "required" string elements when round-tripping.

**Please Note** - This change will break code that assumes reponse lists are always populated by default to empty arrays, and that response maps are popualted by default as empty hashes.

See #99