Performance optimization and eliminate boilerplate code

Hi Bozhidar,

I added a few improvements:

1. Optimized the macro `helm-source-projectile-projects` for the sake of performance. This is because "list" in Emacs Lisp is singly-linked list, frequently adding to the end of a list using `add-to-list` can be slow. For this reason, it's better to add to the front of a list, and just do a one-time reverse after adding all the items.
2. Minor cleanup on `projectile-project-vcs`
3. Added the optional parameter `project-root` for function `projectile-vc` to allow being called from `helm-projectile-vc`, to eliminate boilerplate code.

Thanks,

York Zhao
Hi bbatsov,

The variable name is in fact correct, The old name is `dir` (note the `-` line), and the new name is `project-root` (note the `+` line).

York