Reusable protocol models and codecs for a range of languages