Implement dynamic programming phrasing algorithm

DoDpPhrasing implements dynamic programming phrasing algorithm. Unlink
brute force algorithm, it has linear time complexity. However, due to
"tab at the end" feature, we still need brute force algorithm to get all
possible phrasing result.

Part of #73