Currently AST declarations, their relate utilities, and `Outputable` instances are defined in the same files.
Does anyone object to moving `Outputable` instances to separate files? 
The purpose is to gradually identify reusable functionalities, group them together, polish them (e.g., remove some unnecessary dependencies), and expose them to the end-users.
At this stage, I don't expect any changes outside hsSyn.

/Shayan