Made initialization state publicly readable

Now there is a public property IsInitialized in the Serializer class so callers know if Initialize(..) has already been called.
Changed type of rootTypes from Type[] to IEnumerable<Type>

Made it possible to pass other collections (e.g. List<Type>) to the Initialize methods by changing the type of the rootTypes argument from Type[] to IEnumerable<Type>.