Canu: scalable and accurate long-read assembly via adaptive k-mer weighting and repeat separation