Introduce Asttypes.arrow_flag to encode labelled arguments

This commit introduce the type ```arrow_flag``` in place of ```string``` to represent labelled arguments.

Previously, labelled arguments where encoded as a string tagging the left hand-side of an arrow type:
"" is the absence of label, "?ident" for optional arguments, "ident" for labelled arguments.

The ```arrow_flag``` variant now brings more structure to function arguments.
The purpose is two fold: offers a proper encoding of labels rather than relying on string processing, and ease further extensions of arrow lhs.