Bridging Discrete and Backpropagation: Straight-Through and Beyond