Allow constant expressions in [Type * n].
Now actually allow using constants in those constant expressions for [T * n].
Allow expressions that are not just a single value for repeated fixed length vector syntax.
Fix pretty printer for fixed length vectors.
Add tests for const exprs in fixed vec length type and vec repeat.
auto merge of #5112 : luqmana/rust/3469, r=graydon

So this is a partial fix for #3469. Partial because it only works for simple constant expressions like `32/2` and `2+2` and not for any actual constants.

For example:
```
const FOO: uint = 2+2;
let v: [int * FOO];
```

results in:
```
error: expected constant expr for vector length: Non-constant path in constant expr
```

This seems to be because at the point of error (`typeck::astconv`) the def_map doesn't contain the constant and thus it can't lookup the actual expression (`2+2` in this case).

So, feedback on what I have so far and suggestions for how to address the constant issue?