Revise BCP API  

These changes allow the BCP to be able to correctly interpret an inbound message without having to remember what the last message sent was. This enables non-requested messages from the sim to the BCP, as well as providing a greater range of message handling approaches for future BCPs. While we were at it, we  made some changes which made the message structure more consistent and easy to parse.