Adding basic macro support

Changes:
- Added support for the 'defmacro' special form
- Added support for defining and executing user-defined macros
- Renamed Fn to Function
- Added a 'list' built-in function to create a list from arguments
- Improved descriptions for several internal types
- Fixed a bug where empty input could cause the parser to crash