implemented a lightweight memory model

In the model memory is as light as a pair of pointers into
a memory mapped file. This check-in also introduces tables,
a facility to map memory to arbitrary values, and to create
inter-table links.

Highlights:

1. Reimplemented elf parser (will close #7)
   It still uses bitstring and strings, but loads only headers and
   tables.

2. Factored out a memory from image.
   Now memory is very lightweight and represented just as two pointers
   into memory mapped file

3. Added Table module that allows to perform arbitrary memory mapping,
   like mapping memory to machine code, symbols etc.

4. Reimplemented Image module, so that it now uses new Memory and Table
   modules.

As a result, other than new abstractions we got a significant speedup,
readbin now parses executable 5-times faster.

Also, this commit extends plugin and CI systems

1. Plugin systems now supports all three targets:
   - Native code
   - Bytecode
   - Toploop (I was surprised to discover, that it has different loading
      facilities)

2. Plugins are automatically loaded, when `bap.top` library is loaded.
   This means that, Plugins.load shouldn't be called.

3. CI will now catch lost files

4. Will now test that baptop loads correctly and can execute all
   supplied examples. Also, we now have an examples subfolder.
Merge pull request #14 from ivg/lightweight-memory-model

implemented a lightweight memory model