Fast Kronecker product kernel methods via generalized vec trick