Massive rewrite. The parser and unparser are now together in a single NSFormatter subclass, and are now based on NSCalendar and NSDateComponents instead of NSCalendarDate.
The parser remains more or less unchanged. Two-thirds of the unparser is now based on NSDateFormatter, which handles that portion of ISO 8601 string-formatting more or less for free; the part not handled for free is week dates (because NSCalendar has a different idea of when the week starts), and that unparser also remains more or less unchanged.