Adds nr2char() function and refactors builtin function feature

I added `nr2char()` because I wanted to implement a function that had a non-string argument and this one was used by Surround. Before that, I refactored the builtin function feature in accord with some stuff I did in a previous pull request.

I intend to continue to slowly add builtin functions that have a variety of types and number of arguments and try to mature this feature, also with an eye to supporting functions that are needed by Surround.
Okay, sure. I'll get that changed. I'll change the method names to have a verb in them as well.