The motivation is to remove a special case for invokable statepoints and share the code for intrinsic verification for CallInst and InvokeInst.
The code change is intentionally very mechanical. I left off variable renaming - which will happen in a follow on change - to reduce the textual diff to simplify review. The only part that really needs review is a) whether adding all the methods to CallSite is reasonable to make it closer to a drop in replacement for CallInst, and b) whether extending Write to support CallSites directly is reasonable. (I used the CallSite * to reduce the textual diff for converting a function from CallInst to CallSite. I'm open to changing this, but think the current version is worthwhile, even if ugly.)
I think the type should be a template parameter so that we return a const BasicBlock * from an ImmutableCallSite and a BasicBlock * from a normal CallSite.