fix BOM preservation bugs. add new tests
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 3b38584..510de38 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1663,6 +1663,7 @@
 

 XMLError XMLDocument::Parse( const char* p, size_t len )

 {

+	const char* start = p;

     Clear();

 

     if ( !p || !*p ) {

@@ -1683,7 +1684,8 @@
         return _errorID;

     }

 

-    ParseDeep( _charBuffer, 0 );

+	int delta = p - start;	// skip initial whitespace, BOM, etc.

+    ParseDeep( _charBuffer+delta, 0 );

     return _errorID;

 }