Nand (a=a, b=b, out=aAndb);
This makes an internal wire named "aAndB", but does not connect anything to the And chip's "out" pin.
That's why the And's out is always 0.
You might want to read the survival guide
, particularly the "what's the meaning of a=a?" section.