Cache helm-gtags-select and helm-gtags-select-path result.

The appropriate situation for using the cache feature is working on
large projects like linux kernel, zfsonlinux, etc. File system caches
are useful but they will be evicted when other applications use more
memory, which makes helm-gtags-select and helm-gtags-select-path very
slow. So I think add cache feature will help in such situation.

The feature can be configured by helm-gtags-cache-select-result and
helm-gtags-cache-max-result-size.

The caches are saved in a hash table helm-gtags-result-cache using keys
like "/path/to/src/GTAGS" and "/path/to/src/GPATH". The hash values are
lists of "cache moment file mtime" and "output of global -c or global
-Poa".

The caches are rebuilt if the GTAGS or GPATH mtime is different with the
cache moment mtime.

helm-gtags-clear-cache and helm-gtags-clear-all-cache are for clearing
caches.
wrap call-process-shell-command into with-current-buffer.
Merge pull request #9 from lbsx/cache-select-result

Cache helm-gtags-select and helm-gtags-select-path result.