Fixed an array-handling bug that was breaking box1. If we had
Fixed an array-handling bug that was breaking box1. If we had

struct { int a; int b;} arr[8];
struct { int c; int d;} xyz[8];

and an ECAST edge between arr and xyz, when we unpeeled them into:

  int a; int b; { int a; int b; }[7]
  { int c; int d;}[8]

it would look like the second array was being compared against a non-array,
when it was really just the contents of the first array (this would also
happen to the first array later). We now remember that sorst of thing and
avoid that mistake.

In addition, we short-circuit Array(ll1,i) vs. Array(ll2,j) if i=j and ll1
and ll2 are clearly/simply equal.

samuelhavron/obliv-c,samuelhavron/obliv-c,samuelhavron/obliv-c,samuelhavron/obliv-c