Adding disassemblers

This is a preliminary PR, for discussion purposes only. I won't merge it.

This PR adds a basic support for disassemblers to BAP. Disassemblers are introduced via several layers of abstraction:

1. Backend interface, that should be implemented by a particular disassembler. It is C++, see disasm.hpp and one of implementations, llvm_disasm.cpp.
2. Primitive interface to disassembly. It is a C interface designed with performance considerations in mind. See disasm.h. This interface is implemented by disasm.cpp
3. One-to-one binding to primitive interface (not to be used by a casual user)

On top of 3rd level different disassemblers will be implemented, starting from target-agnostic basic disassembler and lifting to a specific LLVM MC disassemblers. But this will be a little later.

Also, I've enriched our build system. Now it can build c++ plugin. It is also rather flexible and allows to choose different compiler versions and llvm versions. This will also fix #10.