Fixing System.Xml.XPath.XDocument implementation

Previously XPath.XDocument and XDocument existed in one project. XPath implementation was using internal APIs/fields. Proposed implementation is using public surface only.

The previous code doesn't work pretty much in any place where there is a while loop. Accidentally we had no test coverage so it wasn't previously detected.

Internally children nodes are implemented as circular linked list but public surface is a regular linked list. I.e:
internal: container.lastNode->next - returns first node.
public surface: container.LastNode->NextNode - returns null.

Previous code was using similar pattern:

XNode node = container.lastNode;
do
{
  node = node.next;
  // ...
} while (node != container.lastNode);

I did find & replace and it resulted with something like this:
XNode node = container.LastNode;
do
{
  node = node.NextNode;
  // ...
} while (node != container.LastNode);

resulting either NullRefException or 0-2 iterations.