Add type system hooks for marshalling.

In order to properly handle date/datetime fields we'll need a way to
convert from request data into PHP objects. This feels like it fits best
with the existing Type classes.

Add an empty hook into Type so that subclasses can specialize it.
Adding magic creation of select multiple fields for HABTM associations
Adding unit test for EntityContext extracting _ids
Added test for extracting custom primary keys in EntityContext
Fixed typo
Add tests for DateTimeType marshalling.

Add the various cases for marshalling datetimes.
Add invalid value tests to DateTimeType::marshall()
Add marshall() to DateType.

Date type fields have 00:00:00 for the time as they are dates, not
datetimes.
There is no time type in the code base.

This was probably missed/forgotten about and doesn't need to exist
anymore as it will cause fatal errors.
Merge pull request #2923 from cakephp/3.0-form-habtm

3.0 form habtm
Data providers do not need to be static.
Stub out schema in mocked tables.

This fixes fatal errors when accessing schema data.
Merge pull request #2931 from markstory/3.0-datetime-marshall

3.0 datetime marshall
Do not eagerly set the junction relation.

This avoids some recursion problems when using the 'through' config when
setting belongsToMany associations.
Merge pull request #2934 from bar/3.0-through

3.0 - Do not eagerly set the junction relation.
Bail early if Junction table is already instanciated and  is not specified.
Merge pull request #2936 from bar/3.0-through

3.0 - Bail early if Junction table is already instanciated and  is not specified.
Merge remote-tracking branch 'upstream/3.0' into requesthandlercomponent