Duality Theory of Linear Programs: A Constructive Approach with Applications