Support for block scoping.
This is acomplished with a neat method where all locals are captured in their own enviroment.
If the current block scope has another block scope it will exist as the next field in the
enviroment. Essentially keeping all locals very self contained. This will allow for future
improvements to the way the code generator assembles locals.