Initial commit of the datetime input
Start fixing Datetime widget.

- We will probably never use Day of the week selectors.
- Fix selected value handling. DateTime instances come with timezones.
  All other formats are naive and should be avoided anyways.
- Mark non-functioning tests as incomplete.
Add empty test methods.

I think these tests will give us sufficient coverage for the features
present in 2.x
Implement empty options for datetime selects.
Change how options are used in Datetime widget and expand tests.

Stick with Florian's original idea of having separate option sets for
each input. This allows additional HTML attributes to be passed through
to the various input methods, and removes the need to prefix each
option. Doing this will make it easier to build an abstraction in
FormHelper that provides a more backwards compatible interface
implementing dateFormat and timeFormat.
Add more tests for ordering the year select.
Implement year range extension.

When the selected value is outside of the year bounds, the year range
should be extended to include the selected value.
Add tests for generating month selects.
Add tests for hour and fix a few problems.

- Default to not printing leading zeros for months, days and hours.
- Add 12hour hour option.
Cover simple minute and second cases.
Properly implement interval + rounding for minutes.
Implement meridian select.

Add the meridian select and ensure it shows up for 12 hour format
pickers, but not the 24 hour ones.
Add docs for meridian.
Add more doc blocks.
Make methods protected.

Make all the methods protected. This will make changing things later
easier as there is only one public method.

Remove tests for the internals as they are no longer needed.
Add meridian in empty data case.
Add test for empty meridian select.
Add start/end options for hours option.

This allows developers to limit the hour options that are displayed much
like you can limit the number of years displayed.

Refs #2701
Add docs for hour.
Add Datetime to InputRegistry.