Merge latest changes to ProvidedTypes from codeplex

Also marked explicitly all the FSharp.Data specific changes so next time is easier, and removed some duplication between that I found during the process