Created a Formatter to replace calls to toString()
Recursively format fields
Added a test that combines the different scenarios
Added some Javadoc to Formatter
Added license text to Formatter and FormatterTest
Replaced String with Formatter in all Asserts
Refactored Runnable to ExpectedException rule