This PR moves the shared traits `Format`, `Formatter`, `IntoFormatElement`, and the extension traits to `rome_formatter`.
I introduce two new traits to work around Rust's orphan rule.
* `AsFormat`: Has a single `format()` method that returns an object that knows how to format `self` (by reference)
* `IntoFormat`: Has a single `into_format()` that returns an object that knows how to format `self` (takes ownership)
An object that isn't able to implement `Format` itself because of Rust's orphan rule can implement `AsFormat` and `IntoFormat`.
This PR changes the node formatting by making them implement `AsFormat` and `IntoFormat` instead of implementing `Format`. The formatting is implemented by a `Format*` new-type that has a single static `::format` method. This new type has been necessary to have a way to share the formatting logic between `AsFormat` and `IntoFormat`.
* chore: switch from tabs to spaces
* Fix lexer tests
* Run xtask syntax
* Replace more tabs
* Replace even more tabs
* Run xtask codegen and update rast files
* Run cargo format again
* Update editorconfig
* Replace more tabs
* Replace tabs in xtask