Add `print` predicate for dumping info during debugging.

This can also be used as a quick trace mechanism to verify that the
proper definition branches are being followed:
  condition: print(here i am)
Keep formation matchers in `_first part` and `_all but last part`.

These are removed for `_finish` but they can be kept when we are doing
calls starting from the beginning.