func NewMapXmlSeqReader(xmlReader io.Reader, cast ...bool) (Map, error) {
	var r bool
	if len(cast) == 1 {
		r = cast[0]
	}
	if _, ok := xmlReader.(io.ByteReader); !ok {
		xmlReader = myByteReader(xmlReader)  
	}
	return xmlSeqReaderToMap(xmlReader, r)
}
This is only useful if you want to re-encode the Map as XML using mv.XmlSeq(), etc., to preserve the original structure.

Get next XML doc from an io.Reader as a Map value.  Returns Map value.
NOTES:
1. The 'xmlReader' will be parsed looking for an xml.StartElement, xml.Comment, etc., so BOM and other
extraneous xml.CharData will be ignored unless io.EOF is reached first.
2. CoerceKeysToLower() is NOT recognized, since the intent here is to eventually call m.XmlSeq() to
re-encode the message in its original structure.
3. If CoerceKeysToSnakeCase() has been called, then all key values will be converted to snake case.
package mxj
import (
	"bytes"
	"encoding/xml"
	"errors"
	"fmt"
	"io"
	"sort"
	"strings"
)
var NoRoot = errors.New("no root key")
var NO_ROOT = NoRoot  
func NewMapXmlSeq(xmlVal []byte, cast ...bool) (Map, error) {
	var r bool
	if len(cast) == 1 {
		r = cast[0]
	}
	return xmlSeqToMap(xmlVal, r)
}