A readline, libedit, linenoise, etc. replacement