Make Date/DateTime/Time types convert '' to null.

Postgres gets really unhappy when you put '' into a timestamp or time
column type. Instead we can marshall '' into null for these types which
generally causes fewer issues.

Refs #4059
Split out Integer and Float type converters.

Having separate classes makes it much easier to handle the '' => null
conversions. It also makes these types 'faster' as the concrete type has
fewer/simpler code than the base Type class.

This solves integer casting issues that came up in #4058
Merge pull request #4262 from cakephp/3.0-nullable-types

3.0 Make Integer, Float and Date/Time types handle '' better