examples: use filenames from argv instead of hardcoded strings

examples/modifySymbolValue.py: modify "strlen" entry instead of
"printf" entry (example script should work with more binaries now)
examples/addRandomSections.py: add option for deterministic results (...)

also:
- use filenames from argv instead of hardcoded strings
- reduce number of random sections from 10000 to 128 (to speed up
  large number of automated tests)
examples/indirectJmpWithMemoryData.py: remove loops where possible

(old and new version produce same result for selected set of >900
binaries)
add .gitignore (and ignore *.pyc)
ElfParserLib: represent file as bytearray instead of a list() of chars

I want/need this for future changes (e.g. performance, ELF64 support).
sectionHeaderEntryToList: use bytearray(), simplify write loop
generateELf: transform list lookup to set lookup

if a in myList -> O(n)
if a in mySet -> O(1) or O(log n) (hash or tree)

Benchmark:

c4f95dc: 615.39s user 22.88s system 97% cpu 10:54.40 total
    ijwmd took 144.227s to complete
    msv took 97.243s to complete
    nep took 139.420s to complete
    ops took 97.525s to complete
    re took 69.696s to complete
    ars took 106.208s to complete

a8f046e: 612.09s user 22.72s system 97% cpu 10:50.48 total
    [...]

6bfc80f: 477.23s user 18.79s system 96% cpu  8:32.24 total
    [...]

9b9c350: 474.62s user 19.02s system 96% cpu  8:29.50 total
    [...]

this:    141.54s user 16.22s system 91% cpu  2:52.92 total
    ijwmd took 29.749s to complete
    msv took 26.796s to complete
    nep took 29.950s to complete
    ops took 25.215s to complete
    re took 28.730s to complete
    ars took 32.406s to complete

(e.g. ijwmd is examples/indirectJmpWithMemoryData.py)
(6x 967 executables, sequential on an i7-3770)
sectionHeaderEntryToB...: use struct.pack instead of manual int writing
_parseDynamicSymbol: use struct.unpack_from() instead of manual parsing
parseElf: struct.unpack instead of manual int parsing

Shorter. Easier to read and verify.
generateElf: use struct.pack instead of manual integer writing
generateElf: while+append -> if+extend; simpler writing
ElfParser: don't use generateElf or hashlib if result isn't used
make struct.unpack(fmt, my_bytearray) work with older python
ElfParser: replace unpack_from to avoid bytearray issue with python 2.7.3
ElfParser: GOT functions: use struct.pack/unpack
Elf/ElfParser: minor changes

Elf.py: ElfN_Ehdr.e_ident: bytearray instead of list

ElfParserLib.py: "if self.sections:"
    is more pythonic than "if self.secionts != list():"
ElfParser: refactor string extraction
Merge sqall01/ZwoELF (master) into johnLate/ZwoELF (master)
Elf: added PT_GNU_STACK + PT_GNU_RELRO to P_type

(re-apply bd58ea7c, was (accidentaly?) removed in 01e9b5be)