feat(*): Explicit memory management

Problem: The parser passes around union-structs. Thus the class term
and fmla must have implicit destructors.

However, we must delete heap-alloc’d term_cell…

One possible solution is to use explicit destructors, which requires
non-const member elements. Which is this implementation.
fix(shell/CMakeLists.txt): typo
style(types/formula/*): Tabs to spaces
fix(types/formula/term.cpp): Var type declaration

Returns void since returned term is useless. Change to set since
returns void.
fix(types/formula/term.cpp): Persistent var value

Should be able to change variable type after declaring its value.
feat(src/types/*): Add utility functions
chore(*): Change *_type to *_op for consistency
chore(tests/types/formula): add const to utilities
fix(types/formula/fmla_env): check uninitiated
feat(tests/types/formula/formula.cpp): Add tests

Basic tests for correctness. Although not sure if it is extensive
enough.
refract(*): Self-contained terms and formulas
fix(shell/CMakeLists.txt): Typo