moved compose code to its own class

and added X-SAMPA IME