Multi-Objective Linear Programming Revisited: Exact and Approximate Approaches