Implements Morphism.accept
Fix ArrowType creation (use static method)
dispatch returns the wrapped function instead of FuncDispatch object
define api inside __init__