This gets to the issue. What is bouncing ideas off of yourself and reasoning against such? Well it's nothing particularly complex. A conditional is its most fundamental incarnation - add some variables and weights and you have just what you described in a few lines of code. Of course you don't think this poofs a consciousness into existence.
For consciousness to be emergent at some point there has to be wild hand-waving of 'well you see, it just needs to be more complex.' But any program is fundamentally nothing more than a simple set of instructions, so it all comes down to this issue. And if I hit a breakpoint and pause, and then start stepping through the assembly - ADD, MUL, CMP. Is the consciousness still imagining itself doing those things? Or does it just somehow disappear when I start stepping through instructions?
For even the most complex visual or behavior, you can stair step, quite rapidly, down to a very simple set of instructions. And no where in these steps is there any logical room for a consciousness to just suddenly appear.
I mean, I disagree. It's a internal virtual 'playground' you can bounce ideas off of and reason against. Obviously it imparts some survival benefits to creatures that have one at this point in evolution.