Implement tail for docker logs

Fixes #4330

Here is first attempt. Docs and defaults needs discuss.
Perhaps I'm missing something, but perhaps you can avoid running `bytes.Count` on the whole accumulated buffer at each loop cycle: maybe you could keep track of the current `cnt` of `"\n"`, increment it by the count on the newly read buffer only, and break when it reaches the expected `n`?

Something like:

    data = append(b, data...)
    cnt += bytes.Count(b, eol)
    if cnt > n {
        break
    }

It seems to me that the last few lines of the functions (outside the loop) already properly cover for the `break` path.