Uncrustify: The align typedef options

## align_typedef

### align_typedef_span

The span for aligning single-line typedefs (0=don't align)

original align_typedef_span=0 | align_typedef_span=1 | align_typedef_span=2
    typedef int MY_INT;
    int a;
    typedef int      *MY_INTP;
    typedef float  My_Float;
no alignment |
    typedef int MY_INT;
    int a;
    typedef int   *MY_INTP;
    typedef float My_Float;
The third line is not catch in the span |
    typedef int   MY_INT;
    int a;
    typedef int   *MY_INTP;
    typedef float My_Float;
all the lines are catched

### align_typedef_gap

The minimum space between the type and the synonym of a typedef
Can be only used if align_typedef_span >= 1

original align_typedef_span=2 | align_typedef_gap=1 | align_typedef_gap=3
    typedef int   MY_INT;
    int a;
    typedef int   *MY_INTP;
    typedef float My_Float;
as above |
    typedef int   MY_INT;
    int a;
    typedef int   *MY_INTP;
    typedef float My_Float;
no change |
    typedef int     MY_INT;
    int a;
    typedef int     *MY_INTP;
    typedef float   My_Float;
the gap has 3 spaces

### align_typedef_star_style

Controls the positioning of the '*' in typedefs.
0: Align on typedef type, ignore '*'
1: The '*' is part of type name
2: The '*' is part of the type, but dangling

original | align_typedef_gap=3 align_typedef_star_style=0 | align_typedef_gap=3 align_typedef_star_style=1 | align_typedef_gap=3 align_typedef_star_style=2
    typedef int MY_INT;
    int a;
    typedef int  *    MY_INTP;
    typedef float  My_Float;
no alignment |
    typedef int     MY_INT;
    int a;
    typedef int *   MY_INTP;
    typedef float   My_Float;
the star is ignored |
    typedef int     MY_INT;
    int a;
    typedef int     *MY_INTP;
    typedef float   My_Float;
the star is part of type name |
    typedef int     MY_INT;
    int a;
    typedef int    *MY_INTP;
    typedef float   My_Float;
the star is part of type name, but dangling

### align_typedef_func

How to align typedef'd functions with other typedefs
0: Don't mix them at all
1: align the open paren with the types

original | align_typedef_gap=3 align_typedef_star_style=1 align_typedef_func=1
    typedef int MY_INT;
    int a;
    typedef int  *    MY_INTP;
    typedef float  My_Float;
    typedef int      (*foo_t)(void *bar);
    typedef int          (*somefunc_t)(void *barstool);
no alignment |
    typedef int     MY_INT;
    int a;
    typedef int     *MY_INTP;
    typedef float   My_Float;
    typedef int     (*foo_t)(void *bar);
    typedef int     (*somefunc_t)(void *barstool);