projectile.el (projectile-project-vcs): minor cleanup
Refactor `projectile-vc' to allow being used in `helm-projectile-vc'

Added the optional parameter `project-root' for `projectile-vc', so that the
function can be called from `helm-projectile-vc', to eliminate boilerplate code.
Cleanup `helm-projectile-file-actions' definition

Previously, `helm-projectile-file-actions' was defined by copying and pasting
the actions defined in `helm-source-ffiles' first, then modifying a few entries
in the copied list. This is boilerplate and not flexible. For example, if a
function name gets changed in Helm, this list will have to be changed
accordingly.

By adding the function `helm-projectile-hack-actions', we are now able to hack
directly on a dynamic copy of the original list in Helm, so that function name
changes in Helm will less likely to break helm-projectile.