improve updatedb function

1. use call-process-shell-command to hide the progress buffer
2. use idle timer. will be called 3 hours after idle
3. be called only when it is defined in env.el