feat: use CMake instead of GNU Make
feat: rename README.txt to README.md
chore: add .gitignore
feat(src/*): refactor code

 - using std::xxx
 - use const & instead of const
 - fix code not to generate compiler warnings