Reimplement Formatter

Decided to forego worrying about fancy output.
Made generation an adhoc process with free-form functions (much easier).
Made Distinct an enum.
Wrote Unit Tests for generating SQL this time around.
Renamed the arithmetic operators to make them smaller.