Update AST with boolean literals and self

Handling booleans and self references as requests was an awkward
mechanism that resulted in unnecessary lookups. They now have separate
nodes in the AST and are handled appropriately in the interpreter.