Segment is now always used as a pointer and Text is always used as a
value.
Add test to make sure that the "styled" builtin does not modify its
arguments.
This fixes#719.
* Add compatibility test with old implementation
* Add color type
* Add basic style structs and utilities
* Add structs for styled segments and texts
* Add default style transformers to reimplement $edit:styled~
* Add builtins to manipulate styled segments and texts
* Rename style 'underline' -> 'underlined'
* Fix test case
* Add conversion from styled text to ansi sequences
* Return errors rather than throwing
* Validate the type of boolean options
* Delegate old to new styled function
* Rebase for new test framework api and expand test cases
* Remove old builtin function $edit:styled~
* Use strings to represent colors
* Convert bool pointers to simple bool values
* Validate color strings
* Do no longer expose builtin style transformers
* Fix confusion about pointers
* Make outputs more stable
* Expand tests
* Use pointers instead of passing setter functions
* Unexport and rename color check
* Use the empty string for default colors
* Expand tests
* Simplify styled transformers
Now there are three transformers for each boolean style attribute that
allow setting, unsetting and toggling the corresponding attribute.
* Rework and add doc comments