Refactor/assemble schedules (#3794)
Refactor/assemble schedules (#3794)

* Refactor the assemble_schedules.py file to break execution into two main parts: assembling the 'experiments' and assembling the 'config' for the Qobj. Break out instruction assembly from experiment (schedule) assembly into another private function. No API changes, no new public functions. Add type hints.

* Complete documentation

* Respond to feedback from Kevin and update some docstrings following from docathon ideas

* Check hasattr measmap rather than catching AttrError to avoid masking errors in function call

QISKit/qiskit-sdk-py,QISKit/qiskit-sdk-py,QISKit/qiskit-sdk-py