Structure-exploiting algorithms for chance-constrained and integer stochastic programs