Fixed #2443 -- Added DurationField.

A field for storing periods of time - modeled in Python by timedelta. It
is stored in the native interval data type on PostgreSQL and as a bigint
of microseconds on other backends.

Also includes significant changes to the internals of time related maths
in expressions, including the removal of DateModifierNode.

Thanks to Tim and Josh in particular for reviews.
Refs #2443 -- Fix Oracle tests for DurationField.

It helps if there are the correct number of microseconds in a second.
Fixed #17946 -- Fixed deserialization for self-referencing M2M fields

Thanks Philip Mountifield for the report and analysis.