refactor handling the internal codec names to use an annotation

move annotation classes into separate package
let MessageInput set the codec's name directly, which further reduces the API of RawMessage that codec authors have to deal with