Either like structures for C language

Macros for either-like structure declaration:

* struct_either(struct_name, left_type, right_type)
* anonymous_struct_either(left_type, right_type)
* typedef_either(struct_name, typedef_name, left_type, right_type)
* only_typedef_either(typedef_name, left_type, right_type)
* struct_either_of(left_type, right_type)
* typedef_either_of(left_type, right_type)

Initialization macros:

* LEFT(value)
* RIGHT(value)

Querying macros:

* is_left(either)
* is_right(either)
* from_left(either)
* from_right(either)
* is_ptr_left(either)
* is_ptr_right(either)
* from_ptr_left(either)
* from_ptr_right(either)

Macros for conditional execution:

* either(x, on_left, on_right, ...)
* ptr_either(x, on_left, on_right, ...)