Added start of Analysers so we can analyse the parsed program and generate bytecode. Copying these from previous version where it makes sense. Introducing factories where needed to simpligy the code.