Reverted back to using `Lens'`
Changed `drop` and `dropWhile` to getters

Their previous `Pipe` form encouraged code with quadratic time complexity
when used in roughly this pattern:

    example p = do
        p' <- drop n p
	example p'

The reason why is that each recursion adds an additional `(>-> cat)` stage
downstream of the leftovers, which makes it more and more expensive to
read from the leftovers.