Fast constrained least squares spectral unmixing using primal-dual interior point optimization