Allow can_accept to return some information why it cannot accept
Currently it can return only None. But it is both hard to debug (TA2 could log those, primitive authors could understand why their primitive is not being chosen, maybe can_accept is unnecessary strict and they do not that) or hard to use this information to maybe direct the pipeline search process. Maybe the reason is just mismatch in dtype in numpy array, so a casting primitive added before fix this. And so on.
One approach could be that we define a set of custom exceptions for the purpose of can_accept (see primitive-interfaces#38 (moved)) and instead of None the method should throw an exception.
Or we could have it return some other object with information about why not. For example, it could be similar to metadata value, just that it has the closest metadata value which it could accept. So one could diff between given and returned value and see what has to be changed for can_accept to accept arguments.