In its latest version BidiEngine was instantiated, and I tried to recreate it here as close as possible to the original. Yes, current implementation doesn't require instances. However it may be subclassed with the goal to extend its functionality, for example, by working with maps (we will have to keep some internal data for future use), or it may be changed to provide more convenient work with its parameters (we will not have to pass the same parameters in multiple call functions, that perform the same type of transformation). 
If you agree with this, I will add set/get methods for layout parameters (and rename our module to LayoutEngine or TextLayoutEngine, just as you ask to avoid repetition  of the word "bidi" in the name of the module). If no, I will do what you ask in the previous comment.