Optional time components.

I've used this somewhere to parse dates which weren't quite in the right format, e.g. `"2013-04-01 20:00"`, so maybe this is useful? By allowing `ALLOW-MISSING-TIME-PART` to also disregard missing time parts (always at the end), similar strings can be parsed quite easily.

Test cases for some permutations are included.