Pass nameSource in to IrBlockBuilder's constructor

Previously every instruction requiring a name source passed it in as an
implicit parameter. That has two issues:
- IrBlockBuilder instances weren't self contained as they needed to
  either have an IrFunctionBuilder or LocalNameSource passed along with
  them to generate most instructions
- It makes no sense to change the name source during the lifetime of a
  block. Allowing it to be specified per instruction (with an implicit,
  no less) opened up opportunities for error

Change IrBlockBuilder to take a LocalNameSource and pass that down to
IrInstrBuilder