Change MCStreamer EmitInstruction interface to take subtarget info
Modify MCObjectStreamer EmitInstTo* interface

Add MCSubtargetInfo parameter
virtual void EmitInstToFragment(const MCInst &Inst, const MCSubtargetInfo &);
virtual void EmitInstToData(const MCInst &Inst, const MCSubtargetInfo &);
Keep the MCSubtargetInfo in the MCRelxableFragment class.

Needed to fix PR18303 to correctly re-encode the instruction if it
is relaxed.

We keep a copy of the MCSubtargetInfo to make sure that we are not
effected by future changes to the subtarget info coming from the
assembler (e.g. when parsing .code 16 directived).
Explictly pass MCSubtargetInfo to MCCodeEmitter::EncodeInstruction()
Propagate MCSubtargetInfo through TableGen's getBinaryCodeForInstr()
Delete MCSubtargetInfo data members from target MCCodeEmitter classes

The subtarget info is explicitly passed to the EncodeInstruction
method and we should use that subtarget info to influence any
encoding decisions.
Tests for mode switching

1. test that inlineasm works
2. test that relaxable instructions are re-encoded in the correct mode.
Convert to the inner enum so the compiler can warn about it in switches.