Add ByteWeight to _oasis
Merge pull request #24 from tiffanyb/tables-review

Add ByteWeight to _oasis, will fix #23
A pluggable disassembler interface.

This PR introduces a new OCaml/C/C++ interface to a disassembling
facilities. It is developed in assumption that most disassemblers are
implemented in C/C++, so that adding a new disassembler to the BAP will
actually result in writing a new code in C++.

There is a thin C interface, described in `disasm.h` that is used by OCaml
to call disassemblers. This interface is implemented in a modern C++,
that delegates actual work to a backend. The backend should implement a
C++ interface `bap::disassembler_interface` described in `disasm.hpp`
file.

One implementation is provided in this PR, that uses LLVM-3.4 library to
perform disassembly. Other backends are welcome.

On top of primitive interface of `disasm.h` (that is bound in
`Bap_disasm_prim` module), a basic OCaml disassembler is implemented,
see module `Disasm.Basic`, that is implemented in
`bap_disasm/bap_disasm_basic` file. This is a target agnostic
disassembler, that provides a `run` function to perform an arbitrary
recursive parsing (i.e., folding) of binary data. This module is
developed mainly with performance considerations in mind, that's why it
may look a little bit weird.

As a proof of concept `readbin` is enhanced. Now it will disassemble all
found symbols, and then it will linear sweep through all sections, just
to check its robustness.

Also, a test suite is enhanced. Now readbin is applied to all
binaries in coreutils. (Now only for ARM).

Also, build system is enhanced. Now it is able to compile C++ files on
linux and mac os x, search for libraries etc.
optimized readbin

now it runs in incremental mode, that is significantly faster.
Merge pull request #29 from ivg/disassemblers-review

A pluggable disassembler interface.
Add Bap_table test suite and bug fixes
Merge pull request #25 from rvantonder/add-tests

Bap table intersections fix + Bap table tests
fix test condition + minor edit to README.md
Merge pull request #30 from maverickwoo/quickfix

fix test condition + minor edit to README.md
ARM lifting.

This PR adds ARM lifter, aka ARM disassembler.

The original disassembler was refactored into 13 separate modules with
clearly defined interfaces, so that we can later address the code.

The code is rewritten against new `Bap_types.Std`, all reference to Z
are removed, and all bit-logic is performed with bitvectors.

Polymorphic variants are used to represent instruction opcodes. That
allows us to perform matching on instruction classes. Thanks to that,
lifter was split into several functions.

All data types, like registers and instructions are now written
manually, and only the supported set of values are represented. No more,
thousands of instructions.

Lifter is quite fast, about 50 us per instruction. Although, I didn't
made any optimizations, and there are plenty of opportunities for doing
it.

What concering correctness, in all coreutils we have about 1% of unknown
instructions and 1% of lifting failures (all in one place - wrong
argument type of the offset operand, an issue will be created soon).

Also, I've slightly fixed BIL typesystem, since my last edition was to
strict and doesn't allow many valid BIL programs.
Changed output of immediates from decimal to hex.

This change affects the default printer in the C++ LLVM code, as
well as the BAP LLVM operand printing code.
[Iss #31] Updated version number to 0.9.

The last release of BAP previous to the move to GitHub was 0.8.
The current release is 0.9.  We will move to 1.0-alpha once we
are feature complete with 0.8:
 - Disassembler
 - Lifting for x86 and ARM
 - CFG generation
 - SMT binding
 - Python bindings.

See issue #31 history for discussion.
Merge pull request #39 from dbrumley/issue36

[Iss #36] Changed output of immediates from decimal to hex.
Merge pull request #38 from dbrumley/issue31

[Iss #31] Updated version number to 0.9.
Merge pull request #32 from ivg/arm-lifter-review

ARM lifting.
add bap-mc
Merge pull request #42 from rvantonder/bap-mc

add bap-mc
introduce Memory.size
Removed extra cell from a build matrix

Looks like that ocaml 4.02 doesn't work with opam 1.1.0
Merge pull request #50 from maverickwoo/memory-size

introduce Memory.size (resolve #48)