How do you design message flows in IBM Integration Bus to handle error processing and optimize execution groups?