Refactor of Code for Test Purposes I

 - Some cleaning up of static methods and their classes
 - Refactor `BillGenerator` to become the `Bill` class so that results are not directly printed to `stdout` and are returned. In turn, the `Runner` class was changed to print the results to `stdout` by itself.
 - `BillingSystem` will now return the `Bill` objects as before, or a `List<Bill>`
 - Sub-classes of `CallEvent` will now not automatically take the current time as the time-stamp. This has to be done by the callee
 - Subsequently, `BillingSystem` will handle all the timestamps

These changes are all to facilitate tests. More might be on the way.