since atom_to_binary, binary_to_atom uses UTF* as default we could refactor some code.
For 0.9 release we are going to have two different modules Binary and CharList. Implementation specific behavior will be added to those modules. At some point we can provide a module named String that handles those differences.