Use static create calls in Stmt

This gives a bit more flexibility and rids of the
constructor for assertions which had 4 boolean
arguments
Gracefully handle lack of source loc information
Move EvalStmt destructor
Pass source locations to assertions on creation
Pass source locations to calls on creation
Pass source locations to stores on creation
Pass source locations to evals on creation
Missed handle lack of source loc information case
Promote wait_group_event to a statement
Speculate a source location for every block
Pass higher array dimensions
Use llvm_unreachable
Merge branch 'master' into llvm-trunk