Use hsc2hs to determine field types, size of TimeSpec, alignment.

The alignment value was wrong. `hsc2hs` computes the correct value for us.
    Mor importantly, the size of a long differs from platform to platform.
    Whatever the size of a `long`, it usually exceeds the range of an `Int`.
    Again, hsc2hs maps a C `long` to the correct Haskell type that fits, on
    every architecture.
    
`Int` cannot be assumed to have the same range than that of a word
    (pointer size), no matter the platform (see Haskell report - the
    compiler is allowed to still some of the low order bits). So using `Int`
    to represent a C `long` was incorrect.