Learning Linear Programs: Inverse Optimization as a Form of Machine Learning