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
bison 3.0.2