Change how the axis ordering logic works, for evaluation

This simplifies the mechanism into two levels:
 - for simple empty_like, it retains the axis order
   exactly like numpy
 - for multiple-operand expressions, it classifies
   the inputs as f-order, c-order, etc, and uses
   some simple rules to combine them