Refactor and expand Symbol Table. Seperate ConstantDef from FunctionDef.

### 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.