Bangladesh keep semi-final hopes alive after beating Afghanistan