Optimal Survival Trees: A Dynamic Programming Approach