new operator names

the problematic is as follows:
 - we want our operators to be right-associative, which implies that
   they must end with a `:'
 - we would like to have operator names as close to the ones in the
   Wadler's paper as possible, which implies that the previous names
   were simply horrible
 - the symbol `$' is not allowed in operator names in scala, so we
   replace it by `|'

so the result is as follows:
 - document concatenation is don with the `::' operator
 - `d1 :|: d2' is equivalent to `d1 :: line :: d2'
 - `d1 :||: d2' is equivalent to `d1 :: linebreak :: d2'
 - `d1 :\: d2' is equivalent to `d1 :: softline :: d2'
 - `d1 :\\: d2' is equivalent to `d1 :: softbreak :: d2'
fix character and text document creation

 - if the character is a new line, return the `line' document
 - if the text is the empty string, return the `empty' document
new way of rendering documents

documents are now first normalized to chained simple documents that can
then be rendered. A renderer mechanism allows the user to choose the way
a document is normalized