BREAKING: Completely refactor Tower, borrowing heavily from clj18n (thanks asmala!)

See CHANGELOG for details.
Migrate all tests to new API, Expectations