Fix for issue-1075 - Move CreateSerializer out of the base class

This is a small refactor as a precursor for api-explorer work.

This adds a virtual `CanWriteType` method to `OutputFormatter` which our xml formatters use to determine which types they can and cannot serialize.
No, you can't. I'd like to :frowning: `IList<T>` is not `IReadOnlyList<T>`. hence the field and comment