chore: remove "*~", add the rule to .gitignore
fix(CMakeLists.txt): clean up bison/flex related deps

close #1
feat(shell): use 'include "shell/*"' instead of 'include "*"'
fix(CMakeLists.txt): CMAKE_CXX_FLAGS

In general, we should not use "-Wno" options. Most of the time, they are
actually indicating problem in code:

 - move "Wno-deprecated-register" to src/shell/CMakeLists.txt file so
   that it will be only applied to the files under shell directory. This
   one comes from bison/flex which we do not have control.

 - remove "-Wno-delete-no-virtual-dtor". I think we can change the code
   not to generate the warnings.
feat(types): implement destructor instead of dealloc
feat(types/formula): use enum class instead of enum

 - use enum type as it is, instead of unsigned/int.
 - support basic pattern matching, no need to have "unreachable" after
   switch case.
fix(shell/parser.yy): treat 'define' as a simple token, not a string
chore(src/.gitignore): update
fix: remove unnecessary static_cast
feat(types/formula): add unreachable assertions
chore(cmake): fix CMAKE_CXX_FLAGS
feat(cmake): add gtest
feat(cmake): add style check
chore: add cmake module files for style check
chore: add ctest modules
chore: add travis
chore(types/formula/CMakeLists.txt): remove STATIC
fix(cmake): add GTEST dependency for test
style(*): fix
chore(cmake/Modules): add FindGit.cmake