Proper unicode handling through out the code

* Implement proper unicode handling through out the code
* test unicode handling
* migrite to doxygen documentation