Define post-fix arrays as determinate and pre-fix arrays as indeterminate.

This patch changes array semantics based on the position of brackets in a declaration. The idea is to disambiguate fixed-length arrays and indeterminate arrays, so future versions of SourcePawn can build extensible array types without massive confusion.

1. Prefix order, for example `int[] x`, must now be an indeterminate array. To make this absolutely clear, a fixed-array literal can no longer be assigned to an indeterminate array. In the future we'll lax this restriction, once more code is using correct transitional syntax.

2. Postfix order, for example `int x[10]`, now srequire either a fixed-length initializer or constant sizes on all dimensions. Therefore, `char x[];` or `char x[MaxClients]` are no longer valid, as those arrays are indeterminate. There is a stupid loophole here, in that something like `{ {1}, {1, 2} }` leaves the second dimension of an array indeterminate. Thus, we do not specify that all ranks must be determinate - just that if they're not, it's because there was a fixed-array initializer.

This patch introduces two new deficiencies in new-style syntax. First, a common pattern for optional outparams is `out[] = {0}`, or `String:out[] = ""`. We can no longer do that with new-style syntax. Either we'll have a fixed-length initializer on a dynamic array, or a 1-element array type that nothing type checks against. I'll address this in a follow-up patch.

The second deficiency is that you can no longer create dynamic arrays with new-style syntax. For example, `int x[MaxClients + 1]` no longer works because this violates rule #2, and `int[MaxClients + 1] x` will not even parse. I'll address this in a follow-up patch as well, with new syntax.