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.
You're doing no error-checking here. You aren't even using the `end` variable, so why'd you bother having it?

I would expect that an invalid argument passed to `-n` should emit some sort of error. I recommend looking for precedent on errors emitted for bad arguments to builtins. See the `strtol` manpage for the error behavior of `fish_wcstoi`. Also, you'll probably want to check the `end` arg at this point to make sure there is no left-over text in the argument.