redesign this module:
 1. add readline_engine interface
 2. add readline_cmd interface
 3. add readline engine powered by glib main loop
 4. there are should have internal cmds and a cmd pool inside the readline engine implementation.