Rename fail! to panic!

This in-progress PR implements https://github.com/rust-lang/rust/issues/17489.

I made the code changes in this commit, next is to go through alllllllll the documentation and fix various things.

[ ] - Rename column headings as appropriate, `# Panics` for panic conditions and `# Errors` for `Result`s.
[ ] - clean up usage of words like 'fail' in error messages

Anything else to add to the list, @aturon ?

I'm submitting just the code bits now so that we can see it separately, and I also don't want to have to keep re-building rust over and over again if I don't have to :wink: