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.
If `errno == ERANGE` this is going to be a very confusing message, because that means the argument was an integer that was simply too large (or too small).