Catchup PR
Port all developments from Run2 branch to Run2_2017 branch, except 5e1c6ad5 which is not needed for 9_4_X due to framework improvements.
Port all developments from Run2 branch to Run2_2017 branch, except 5e1c6ad5 which is not needed for 9_4_X due to framework improvements.