Fixed bug #14732

https://bugzilla.xamarin.com/show_bug.cgi?id=14732


`CopyDirectory` in main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs
The recursion detector assumed statements in foreach loops were always executed at least once.

`State.RootState` in main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.Xml.StateEngine/State.cs
The recursion detector incorrectly considered `non_recursive ?? recursive` to be recursive.

Also fixed for statements (which had a problem similar to foreach statements)