Put candidates fully matched on top when fuzzy sorting (#145).

* helm.el (helm--collect-pairs-in-string): New.
(helm-score-candidate-for-pattern): Use it, fix docstring.
Give a maximal score when pattern is fully matched.
Improve fuzzy sort function.

* helm.el (helm-fuzzy-matching-default-sort-fn-1): Memoize.
Get all infos of major-mode in helm-semantic and simplify (#777).

* helm-semantic.el (helm-semantic-source): Use helm-source-in-buffer.
(helm-semantic-get-candidates): Removed.
Allow adding more than one function to match/search slots.

* helm-source.el (helm--setup-source): Do it.
* doc/Home.mdpp: Update FAQ.
* helm.el (helm-score-candidate-for-pattern): regexp-quote pattern.
Add docstring in fuzzy sort function.

* helm.el (helm-fuzzy-matching-default-sort-fn-1,
helm-fuzzy-matching-default-sort-fn): Do it.
* helm.el (helm-score-candidate-for-pattern): Fix docstring.
Neutralize invalid regexps in in-buffer search.

* helm.el (helm-candidates-in-buffer-search-from-end,
helm-candidates-in-buffer-search-from-start): Do it.
* helm-files.el (helm-ff-sort-candidates): Use helm-score-candidate-for-pattern and memoize.