rust: Don't call libc::exit

This appears to eliminate the common errors with assertions failures
in rust_initialize_rt_tls_key.
auto merge of #9471 : brson/rust/rustexit, r=thestinger

This appears to eliminate the common errors with assertions failures
in rust_initialize_rt_tls_key.
Stop accepting 'impl ...;', require {} instead

Progress on #7981
auto merge of #9336 : alexcrichton/rust/issue-7981, r=catamorphism

Progress on #7981

This doesn't completely close the issue because `struct A;` is still allowed, and it's a much larger change to disallow that. I'm also not entirely sure that we want to disallow that. Regardless, punting that discussion to the issue instead.
mark functions internal if not building a library

the entry point is wrapped with what should be the only public function
auto merge of #9474 : thestinger/rust/internal, r=alexcrichton

the entry point is wrapped with what should be the only public function