Revisiting Perceptron: Efficient and Label-Optimal Learning of Halfspaces