A Divide and Conquer Method for the Unitary Eigenproblem and Applications