Add utility subs: ps1_escape, ps1_invisible
Compiler: major rework

Changes in the PS1 compiler:
- Colors are now specified as a string in ARRAY refs.
- SCALAR refs are now strings that must be passed as is to the shell or that
  have been already properly escaped
- bare SCALAR strings are strings that will be escaped (bash: '\' are
  doubled)
The default prompt is updated for those changes.

Other changes:
- expand() is renamed to colored().
- In main loop, expand() is replaced with compact().
- compact() returns a single scalar (if possible, or else, dies) if
  called in scalar context.
Add a fallback PS1 if the PS1 construction dies