Pull out some re-used subpatterns.

Having smaller segments makes reading the larger patterns simpler, and
allows for less duplication across the various patterns.

Refs #2436
Relax the 'my' and 'ym' date validation formats.

All other formats that include 'y' allow 2006 or 06. These formats are
now conformant with the other formats available.

Closes #2436
Fix mixed tabs/spaces.
Make API docs easier to read.