Lifetime Removal
This MR removes the requirement for the Statement and its children to be attached to the Builtins' lifetime. It does this by using the built ins from the shell directly. This will make it easier to adapt the parser as all the processing happens at the shell level anyway.
Surprisingly there was only one place I needed to tweak anything except for removing the lifetimes, and that was a simple "get" on the shell's builtinmap. and the shell was already a parameter to the function anyway.