Separate Python from Shell

`Shell` should just be a regular shell so as to not commit users to any
particular customizations.
remove obsolete coroutine
Make autocomplete search subdirectories
refactor