Practical sketching algorithms for low-rank matrix approximation