Serializing directly to file in UTF8.

The XML Serializer now serializes directly to file in UTF8 in order to get the same xml file header and encoding under mono and .net instead of going though a String first using MemoryStream and a StreamReader.

This was done in order to get the same xml using Mono on Linux and .NET on Windows.

Also added locks in Serializer property initializer for thread safety.