This change builds up on http://reviews.llvm.org/D7756
It teaches lowering to correctly handle invoke statepoint and gc results tied to them. Note that we still can not lower gc.results for invoke statepoints.
Also it extracts getCopyFromRegs helper function in SelectionDAGBuilder as we need to be able to customize type of the register exported from basic block during lowering of gc.result.
LLVM Coding style is to use CamelCase starting with a upper case letter -- please change res to Result or something like that.