Add substring search

Three substring search algorithms are implemented:
- Brute force
- Knuth-Morris-Pratt
- Boyere-Moore

Here is the summary table:

algorithm      version     guarantee   typical    backup_in_input    extra_space
********************************************************************************
brute force                   MN         1.1N          yes               1

   KMP         full DFA       2N         1.1N          no                MR

               mismatch       3N         1.1N          no                M
              transitions
                  only

Boyere-Moore full algorithm   3N         N/M           yes               R

             mismatched char  MN         N/M           yes               R
             heuristic only
********************************************************************************
Merge branch 'feature/substring_search' into develop

Conflicts:
	classic_algorithms2/classic_algorithms2.cpp