Algebraic Varieties: Minimal Models and Finite Generation