New regulations billing system

The billing system is now capable of calculating (to the nearest second) how long customer is within the peak period when making a call. Further, it is possible to add multiple peak periods by hour, and the system can run for days. Work outstanding is adding some logic around populating the peakPeriodList to make sure periods are in order and not overlapping. Note that to roll over to a new day, this requires the population of 2 items in the list (start - 24,  0 to end). I'm sure you can see why. Another thing, is I could extend the system to work to the nearest second (or millisecond) without TOO much effort... time allowing. Let me know what you think? 

Code probably needs a comment spruce - I can understand getTimeInSecondsInCallDuringPeak() being difficult to yield, espcially with all the milliseconds/seconds conversions (java standard deprecate Date datatype date to time getters!?). 

I've done some testing myself, but have written no unit or acceptance tests. I will discuss with Yong & Keng on this ASAP.

Oh yeah, Java sucks.