Hid inner workings of class from outside user.
- Changed all input types to their appropriate type rather than String
- Changed the underlying data to various Object types rather than String
This means than when a user wants to add a Long to the class, they pass
in a Long. Before they had to pass in a String, which was just silly.

This has resulted in a lot of repeat code in the constructor, where the
column types are defined and the data is added to the table.