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 way to count. `num_chars` is already `2` before you've even read your first character. I would suggest initializing `num_chars` to `0` instead, and then using a `<=` comparison here.