New -n option for read builtin

Usage: read -n nchars
Reads maximum of nchars characters. If nchars <= 0, there's no limit which is the default.

As written in #1616, it would be nice to have. Please check the modifications carefully before merging. I'm not an expert.
This is a bit of an odd phrasing. I'd suggest something like

> ```
Read one line of input. Before calling this function, reader_push()
must have been called in order to set up a valid reader
environment.
If nchars > 0, return after reading that many characters even if
a full line has not yet been read.
```