Simplify some of the REPL parsing/completion code

I've thrown together several commits. The main thing that I've done is try to remove code duplication. In particular, I tried to link the suggestions given in the REPL completion, and given at the REPL help prompt, to the actual code for parsing those things that are completed. This way, as features are added and removed, they will also be added and removed to the REPL completion, so it should be easier to keep things consistent with each other.

From doing this, I noticed that there are now several constants (such as `prim__UnsafeBuffer`) and several REPL commands (such as `:u` - this is what actually got me to look at the REPL parsing and completion) which are now available for REPL completion.

I also modified a bunch of the parsing code, mainly in an attempt to remove code duplication. I've also simplified the parsing code in some places, removing unnecessary whitespace parsing and unnecessary calls to `try`.

Finally, I fixed a couple of typos in the library documentation, and made some very minor changes to the code for :search and its documentation.