Refactor Time and Date classes

`Time` and `Date` were scoring pretty low on CodeClimate. I did some refactoring, mostly removing duplication and extracting functionality into a couple of new classes.

![Screen Shot 2013-03-04 at 9 45 55 PM](https://f.cloud.github.com/assets/27847/219710/e6443192-853e-11e2-8d97-b4516f1a2b6d.png)