Algeria to hold July 4 presidential election after mass protests