Update helm-source-projectile-dired-files-list and fix bugs

Use idiomatic way to build helm-source-projectile-dired-files-list and
add new features: from now on the entries listed in the source will
share the same faces with helm-find-files, include normal file, links,
directory and executable.

Now the Dired buffer listing in helm-source-projectile-dired-files-list
also contains full action listing as in helm-projectile-find-file.

Also fix bugs in add and delete actions of helm-source-projectile-dired-files-list:

- Currently, if an existing file/directory has the same name as the new
  name a user entered, then Dired will use that directory instead of
  creating a new Dired buffer and only allows inserting existing
  files/directories into the new Dired buffer. If a non-existing
  file/directory is inserted, Dired will signal an error and creating a
  new Dired buffer (as a result of adding more entries/deleting old
  entries) failed. We must create a temporary name of current Dired
  buffer name that is non-existent, so we can insert anything we want
  without error, and rename to the original name used entered later.
Update helm-source-directories-list

Use idiomatic way to build this source.
Update helm-source-projectile-projects

Use idiomatic way to build this source and add fuzzy-matching for this
source.
Update helm-source-projectile-files-dwim-list

Use idiomatic way to build this source.
Disable virtual Dired manager on remote host by default

For performance reason, retrieving entries in current remote Dired
buffer may take considerably amount of time. So, it's better to disable
this feature on remote host by default, and leave the decision to user
whether to activate it or not.
Update helm-source-projectile-files-in-all-projects-list

Use idiomatic way to build this source.
Update helm-source-projectile-recentf-list

Use idiomatic way to build this source.
Update helm-source-projectile-buffers-list

Use idiomatic way to build helm-source-projectile-buffers-list. For this
source, we need to create our own specialized helm-source-projectile-buffer
class that combines both attributes in helm-source-sync and
helm-type-buffer classes to make Helm displays this source using its
buffer UI.
Update command helm-projectile-find-other-file

Use idiomatic way to build source for this command. Also we finally
remove the function helm-projectile-init-buffer-with-files (used for
manually "manully" insert candidates into buffer) as it is not needed
anymore.
Merge pull request #553 from tuhdo/master

Update helm-source-projectile-dired-files-list and fix bugs; update other sources
Rewrite simple parts that are using cl-lib
Rewrite projectile-commander

Using `read-char-choice' instead of `read-char' simplifies a lot.
Rewrite loop in projectile-compilation-find-file advice