Risk-Neutral & Risk-Averse Dynamic Programming Through The Lens Of Semismooth Newton Methods: From Theory To Practice