Data.String: refactor replace() and replace_once()

change to use substitute() for performance.
Data.String: bugfix infinite loop in scan()

bugfix infinite loop in scan() when matched
string is empty.
And improve performance.
Merge pull request #82 from deris/refactor/replace

Data.String: refactor replace() and replace_once()
Merge pull request #83 from deris/bugfix/scan

Data.String: bugfix infinite loop in scan()
Data.String: bugfix typo in common_head()
Data.String: bugfix in diffidx()

bugfix double return and call strlen()
around common_head().
Merge pull request #85 from deris/bugfix/common_head

Data.String: bugfix typo in common_head()
Merge pull request #86 from deris/bugfix/diffidx

Data.String: bugfix in diffidx()
Data.String: rename: %s/replace_once/replace_first/g
Data.String: changelog for the rename: "replace_once() -> replace_first()"
DateTime: better english
DateTime: add TODO
Text.Lexer: fixed document
Text.Lexer: fix typos in doc
Text.Lexer: update document
Data.String: performance: use sort() instead of use loop
Merge pull request #87 from deris/performance/common_head

Data.String: performance: use sort() instead of use loop
Text.Lexer: add spec
Data.String: there is insufficient pattern(\r) in wrap()
Text.Lexer: use Prelude.is_string/is_list