Effects of nitrogen-, boron-, and phosphorus-doping or codoping on metal-free graphene catalysis