Range parsing fixes
Range parsing + handling for commands

Also pulled out command parsing
ui_print() - scrolls up the screen if necessary
:p command
:p waits after printing
Allow newline to end :p without a message
join() takes char **, not const char **

This resolves problems with nested pointer type passing.
More generic command parsing - argv[0] is all ascii
Maintain argv[argc] = 0 when inserting argv
:g skeleton
:g debugging for command parsing