Activate Eshell and Magit outside of project for helm-projectile

Currently both helm-projectile-switch-to-eshell and helm-projectile-vc
use projectile-project-root to get full pathnames, but
projectile-project-root does not allow usage outside of a
project. We need to disable project root requirement.

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>
Add compile action to helm-projectile
Reuse existing Helm actions

Helm already provides lists of usable actions for helm-find-files and
helm-recentf. We should reuse these actions for
helm-projectile-find-file and helm-projectile-recentf.

Signed-off-by: Tu, Do <tuhdo1710@gmail.com>
Use proper Helm interface for Projectile commands

Since we already have sources for the generic command helm-projectile,
we could reuse those sources and create commands for normal Projectile
commands. The reasons:

- Setting projectile-completion-system to 'helm is not enough, because
it only uses Helm interface but does not provide useful Helm features
like those in helm-projectile.

- In large source tree, open helm-projectile could be slow because it
  needs to open all Helm sources. In this case, individual commands are
  more optimal.

This change is not intrusive: users can choose to use it or not with
helm-projectile-on command, and during using the bindings, users can
turn off with helm-projectile-off.
Make projectile-find-file do what I mean

If point is on a filepath, Projectile first tries to search for that
file in project:

- If it finds just a file, it switches to that file instantly.  This
works even if the filename is incomplete, but there's only a single file
in the current project that matches the filename at point. For example,
if there's only a single file named "projectile/projectile.el" but the
current filename is "projectile/proj" (incomplete), projectile-find-file
still switches to "projectile/projectile.el" immediately because this
is the only filename that matches.

- If it finds a list of files, the list is displayed for selecting. A
list of files is displayed when a filename appears more than one in the
project or the filename at point is a prefix of more than two files in a
project. For example, if `projectile-find-file' is executed on a
filepath like "projectile/", it lists the content of that directory.
If it is executed on a partial filename like "projectile/a", a list of
files with character 'a' in that directory is presented.

- If it finds nothing, display a list of all files in project for
  selecting.

Also refactor code to make it reusable for both normal projectile and
helm-projectile. The new dwim commands are bound to "g" key, because it
is next to "f" key and we can think of "g" as "go".

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>
Update docstring commands that find other files
Update CHANGELOG
Correct typo
Merge pull request #446 from Silex/typo

Correct typo
Merge pull request #441 from tuhdo/master

Improve projectile and helm-projectile with more features
Add helm-projectile-find-other-file

Add proper Helm command for projectile-find-other-file. It behaves
exactly like projectile-find-other-file but has Helm actions and able to
open file in other window as well as open multiple files.

This command has its own function because C-u is used for flex-matching
instead of invalidating cache.

Also refactor helm-projectile-command macro to accept prompt string.

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>
Merge pull request #449 from tuhdo/master

Add helm-projectile-find-other-file
Remove "Find shell command" action and fix prompt typo

Remove because it is not necessary in Projectile since Projectile
already displays all files in Project for finding already. Also, it's
buggy for Projectile.

Also fix prompt typo for helm-projectile-find-dir.

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>
Fix some actions and reformat code to look better

These Helm actions are fixed:

- Improve helm-projectile-switch-to-shell: make it also work with
  helm-projectile-find-file. Reuse helm-ff-switch-to-eshell.

- Fix "Helm Etags Select" action: now from helm-projectile-find-file, the action
  helm-etags-select can be invoked to list all available tags. User
  must generate a TAGS database and load into Emacs with visit-tag-table
  first. While in helm-etags session, pressing "C-c p f" switches back
  to helm-projectile-find-files.

- Fix "Eshell command on file(s)" action: now properly retrieve files to
  run commands on.

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>

Signed-off-by: Tu Do <tu.h.do@dektech.com.au>
Merge pull request #450 from tuhdo/master

Remove unnecessary "Find shell command" action, fix prompt typo and fix some actions
Invalidate cache upon file deletion

If a file stored in the cache is deleted, it should automatically be
removed from the cache without requiring manual invalidation.
Remove another unnecessary action and update README

The action "Complete at point" is not needed for helm-projectile. It is
used in helm-find-files to complete partial paths, but we always get
full paths in helm-projectile.
Merge pull request #451 from keelerm84/feature/remove-from-cache

Invalidate cache upon file deletion
Merge pull request #452 from tuhdo/master

Remove another unnecessary action and update README
Update key binding description

Latest Helm changes "C-x @" to "C-c r" to drop into root. This should be
updated in helm-projectile as well. Actual key binding does not need to
be updated because we reuse helm-find-files-map.