Optimizing Lempel-Ziv Factorization for the GPU Architecture