Refacatoring MwTimeIsoFormatter

... again. ;-) I hope it makes sense.

This also adds a bunch of additional test cases.

In case you disagree with my relaxed aproach (e.g. the year +0 being
rendered), my answer is:

This is a formatter. A formatter should not do much validation. If
a value can be rendered without loosing digits, it should be rendered.
Validation must be done somewhere else.

Change-Id: I2490c9ca26824b5b0a312044f19efb93616f0597