Reorganize TextAttribute api

Moved TextAttribute subclasses to their own files.
TextLayout now uses TextAttribute to provide
format info to the backend.
Seal some classes
Ongoing work to support formatted text

Remove FontSizeTextAttribute for now, it is not easy
to support in all platforms.
Underline and strikethrough formats can be
explicitly disabled now.
[Mac] Add support for formatted text