[WIP] Refactor and expand Symbol Table. Seperate ConstantDef from FunctionDef.

### Parser:
* Separate definitions of constants from definitions of functions. 

### Symbol:
* Add `type` to entries.
* Add `Constant` and `Variable` classes for creating specific types of entries.
* Separate entry creation from entry insertion; the former is done via public methods, the latter via private ones.
* Delegate error string formatting to `error` module.
* Make `logger` public.