Handle mi exceptions

MI exceptions are now passed as a triple (code, message, stack info) instead of exception objects so that there are no dependencies between pycc and MI to have certain classes.