Arabic Normalizer (c++)  + Buckwalter Romanization Converter

(This pull request is for reviewing)


I think all these arrays should be both static and const.  Making them const means the compiler can put them into the read-only data section - when multiple processes use the library, they can share that data.

It would also be better to define a struct instead of using std::pair here.  If you use std::pair, the compiler will likely have to generate code to fill in the array at runtime (I tested and GCC 4.9 does) and it can't be in the read-only data section, but if you use a structure, the whole thing is handled at compile time and gets put in the read-only data section.  So something like:

```
struct shaping_map {
    unsigned a, b;
};

static const shaping_map shaping_map_data[] = {
    { 0xfe83,  ARABIC_ALEF_HAMZA_ABOVE },
    // ...
};
```