eval: Change ExecCommand to take additional cmdType arg
eval: Use intermediate command struct to build commands
eval: add builtinCommand struct
eval: Separate evalCommand func
eval: Cleanup