Named guards

New Printable trait for all guards and rules (to separate the name from the printed expression).
New OptNamedPrintedFallback for classes both OptNamed and Printable, to fallback toString to the printed form if the name is unspecified.