Photonic quantum information processing: a review