Princess of Wales reveals she has cancer