The Lawson-Hanson algorithm for non-negative least squares