Added TRAIT_PROTOCOL macro to declare trait methods in a protocol.

Note: @trait is a not valid macro name due to '@' being a reserved compiler directive,
so TRAIT_PROTOCOL is used instead.