Better error message on assignment to non-lvalues

Array-types given higher preference (than dereference), otherwise we end
up with (after fold):

int x[10];

x = (int[10])2;

And we get an error about the cast, not the lvalue.
Fix default stack alignment