backend: mangle new expires column

The new expires column uses infinity in the database (supported by
postgresql) but as that is not supported by Pythons datetime object we
cast infinity to None.

This is the second type of mangling we do, in addition to the existing
mangling of long numbers for the statistics. I've refactored the whole
thing a bit and moved out the mangling parts into a separate function.
CLI: add expires field
Add expires dependencies for apt package
Add expires deps to requirements.txt for nipapd

parsedatetime and pytz
Update test cases for new expires attribute
backend: add documentation for expires attribute

The expires attribute accepts a number of different formats, such as
ISO8601, None, 'never' or 'infinity' for representing positive infinity
and a fuzzy text parser for interpreting things like "tomorrow" as now+1
day.