[ast] Add a new helper SILBoxType::withMutable to take in a SILBoxType and produce a new BoxType with mutated mutability of its fields.
This is properly prepared for multiple field boxes since we take in an
initializer_list of fields/mutability changes.
Given that I made this change to SILBoxType, I aligned the same API on SILLayout
to also take an initializer_list of fields/mutability changes instead of just
assuming a single field layout.