Add dummy ui and console to allow debug on PC.
Fix a bug that ending whitespaces lead to alias reprocessing.
Virtual key groups for controls and symbols.
Merge branch 'master' into dev
Parametrize refresh pause value.
Merge branch 'master' into dev
Delete an unwanted line.
Merge branch 'master' into dev
Merge branch 'master' into dev
Merge branch 'dev' of github.com:ywangd/stash into dev
The revamp of the parser is done.

More faithful to Bash. More efficient. Relatively more straightforward
than the previous version.

The command line parsing is now composed of a parser and an expander.
The parser is also used by the completer.

When defining an alias, the value is always fully expanded to the form
where it contains no more alias. This removes the need of recursive alias
expanding when parsing command line.

Added primitive history search functions.
start working on runtime optimisation
The completer now works for cmd_word that is a path name.
Merge branch 'master' into dev
Merge branch 'dev' into runtime-opt
Runtime optimization mostly works.

Enclosing env vars made clear. Shell script file contents are executed
in one batch to make env persistent during the execution.
io_stack is now processed separately from state_stack
Do not add history for lines in rcfile.
Add persist options to allow the source command to be possible.
Default history is managed by the number of threads layers.
Add command line arguments for shell scripts.
Add custom expanvars to do variable expansion.

It expands undefined variables to emtpy strings which is consistent to
shell behaviour, while the python builtin one leaves them unchanged.

Need to take care the situtation where args or even commands expand to
empty strings.
Recheck simple_command after expansion to remove empty fields.