Let llsize_of be a ConstantInt
Fix const array index limit calculation.

The number of operands of the LLVM node initializing the array
underlying a const vector isn't always the array length -- if the
array is of a sufficiently primitive type and all the elements' values
are known (or something like that), LLVM uses a specialized Constant
subclass that stores the data packed, and thus has no operands.  Oops.

But, because llsize_of now gives us a ConstantInt, we can just fix
mozilla/rust#3169 and this all goes away.
Add and lex LIFETIME tokens

cc #4846
Fix subtle error in caching during kind computation that could cause linear
values to be copied.  Rewrite kind computation so that instead of directly
computing the kind it computes what kinds of values are present in the type,
and then derive kinds based on that. I find this easier to think about.

Fixes #4821.
auto merge of #4844 : jld/rust/const-index-fix, r=graydon

Fixes #3169 and uses that to fix const array indexing, which I broke (in a way that doesn't break tests but will greatly confuse users) while trying to fix const enum vectors.
auto merge of #4847 : nikomatsakis/rust/region-syntax, r=graydon

cc #4846

r? @pcwalton
rt: remove unused 'rust_compare_and_swap_ptr'. Closes #4836
auto merge of #4848 : nikomatsakis/rust/issue-4821-bad-kind-computation, r=catamorphism

...ear

values to be copied.  Rewrite kind computation so that instead of directly
computing the kind it computes what kinds of values are present in the type,
and then derive kinds based on that. I find this easier to think about.

Fixes #4821.

r? @catamorphism
auto merge of #4852 : Caseus/rust/issue-4836, r=brson

Simple removal of rust_compare_and_swap_ptr from rt, as per Issue #4836
fix typos in sample code, add enum to json encoder, add test case
json bugfixes
tidy
json bugfix
json add enum encoder test case
re-special-case Option in JSON encoding
json tidy