Avoid return blocks that have only a single predecessor

Currently, we always create a dedicated "return" basic block, but when
there's only a single predecessor for that block, it can be merged with
that predecessor. We can achieve that merge by only creating the return
block on demand, avoiding its creation when its not required.

Reduces the pre-optimization size of librustc.ll created with --passes ""
by about 90k lines which equals about 4%.
Avoid empty "static_allocas" blocks

When there are no allocas, we don't need a block for them.
Avoid empty "else" blocks

If an "if" expression has no "else", we don't have to create an LLVM
basic block either.
auto merge of #7763 : dotdash/rust/empty_blocks, r=pcwalton

These commits remove a bunch of empty or otherwise unnecessary blocks, reducing the size of the pre-optimization IR and improving its readability. `librustc.ll` created with `--passes ""` shrinks by about 120k lines which equals about 5% of the total size.