WIP: Refactoring of annotations and entrypoints
To avoid bugs such as tezos/tezos#716 (closed), we want more static guarantees on the types of annotations and entrypoints. We do this by turning them into private types inside small modules.
WIP because the issue is not solved yet. Moreover, the client modification should be in another commit.
I think this refactoring adds a check for the root name that was maybe previously allowed to exceed the 31 bytes limit. Apart from this, I think the semantics is not changed.