Implementation of the Unicode Bidirectional Algorithm (UBA).

Reference: http://www.unicode.org/reports/tr9/.

Converts logical strings to their equivalent visual representation. Persian, Hebrew and Arabic languages (and any other RTL language) are supported.

```rust use bidi:*;

let text: &str = "مهدی"; let mut textu16 = text.encodeutf16().collect::>();

performshaping(&mut textu16);

let result = String::fromutf16(textu16.asslice()).unwrap(); asserteq!(result, "ﻣﻬﺪﯼ"); ```