first stab at a pahole equivalent.

first stab at a pahole equivalent.
it's not too pretty, but it's not too shabby either.

testing done:

    (pypy-elf)# damien@localhost ~/Work/github/pyelftools [17:57:51]> gcc -g -o examples/sample_structs.elf examples/sample_structs.c
    (pypy-elf)# damien@localhost ~/Work/github/pyelftools [17:58:05]> time python examples/pahole.py examples/sample_structs.elf
    Processing file: examples/sample_structs.elf
    Compile unit examples/sample_structs.c
    45[45]: type long unsigned int;
    52[52]: type unsigned char;
    59[59]: type short unsigned int;
    66[66]: type unsigned int;
    73[73]: type signed char;
    80[80]: type short int;
    87[87]: type int;
    94[94]: type long int;
    109[109]: type char;
          union __unknown_116 {
            long int *           pointer_to_long;
            char *               pointer_to_string;
            void * * *           triple_void_indirection;
          }
          struct namedFoo {
            int                  some_int;
            char                 some_character;
            volatile long unsigned int [12] some_volatile_unsigned_long_array;
            union __unknown_116  some_union;
            int                  seven_bits;
            int                  remaining_bit;
            const struct namedFoo * self;
          }
    315[315]: typedef namedFoo struct namedFoo;
          struct __unknown_326 {
            int                  member;
          }
    347[347]: typedef anonymousStruct struct __unknown_326;

    real    0m0.500s
    user    0m0.235s
    sys     0m0.262s