Separate out code into different modules; better dumping capability.

This separates out the large amount of code in isodatetime.py into separate modules.

A more reliable and much better tested dumping mechanism is now included, which
partially bootstraps off the parsing information (a full bootstrap would be nice but
probably too slow). This allows a user to format a `TimePoint` instance using a
simple string syntax derived from the parser_spec module - for example:
```
"YYYY-DDDThh:mmZ"
```
to always format dates and times in ordinal date format, without expanded year
representation, without seconds or decimal time information, and at UTC.

@matthewrmshin, please review.