Graphitic carbon nitride with S and O codoping for enhanced visible light photocatalytic performance