Name anonymous structs based on their structure

Quoting Stephen Kell's bug report:

    CIL gives names to anonymous structure or union types, such as in
    the following.

    typedef struct { double r; double i; } complex;

    CIL will give it a name such as __anonstruct_complex_nn, where 'nn'
    is a number chosen serially. So, the same header defining the same
    struct complex will generate different 'nn' in different compilation
    units, because of the different inclusion contexts.

    This is harmless in nearly all applications of CIL. But in my case
    it causes a problem, because according to the C standard, types with
    different tags are not compatible (section 6.2.7), whereas before
    the CIL transformation, they were compatible. It's important for my
    tool that compatibility across compilation units is preserved; I
    therefore have to erase the 'nn' to work around this behaviour.

Instead of generating an arbitrary index for anonymous structures, this
patch uses hash of the structure content as a hint. This is not
bullet-proof because we are still using increasing indexes in case of
hash collisions, and we do not normalize the structure before hashing.
But it should be good enough for most puposes.

Closes #10.

Thanks to Stephen Kell for testing and improving this patch.
Fix documentation for Cil.ptrdiffType