using is_callable utility instead of proto hack
simplification of semantic action interface
  - there are only 2 variations now f() and f(ctx)
  - added _attr(ctx) accessor for accessing the attribute
  - added _where(ctx) accessor for accessing the iterator range
this, and in preparation for a unified call interface for actions as well as lazy args to e.g. eps(f)