Instructions can only have a single label bound to them.
Cleanup logging classes.

Add a dictionary to the log message to store extra information about the log event.
Updated the master branch to have most of the UI changes from the experimental compiler branch
Fix various issues that popped up during the UI change

- Empty stream being passed to the compiler
- Compiler resolving the AST multiple times
- Incomplete or unnecessary context manipulations