Reimplement licm
Move expression rewriter to different file
Move code hoister to a separate class
Move count occurrences to utils