Tailoring gas sensing properties of multi-walled carbon nanotubes by in situ modification with Si, P, and N