Implement DateTime.format() functionality

I have implemented the `format()` functionality for DateTime, to return a formatted string from a DateTime. The formatting is largely according to the [LDML standard](http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns), except for the timezone information and some small things, but I think that this is a good start.