introduce a abstract_cmd callback

It's not quite the right interface (thinking required), but it's enough to
play around with it.

Simply define

  abstract_cmd({call, M, F, A, Meta}) ->
    AbstractCall.

in the model. This function is called before the shape metadata is examined
so it can updated the shape if required.
test the abstract_cmd callback in reg_eqc_2

Introduced flip_register and abstract it to register.