www: Pool selector dir. now uses scope binding

Modified the pool selector directive to use scope binding to communicate
what pool has been selected. This adds some flexibility at we can choose
what variable in the parent scope to assign the selected pool to,
instead of letting the directive assign directly to $parent.from_pool.
www: Three small visual corrections

Three small fixes to the web UI:
* Avoid breaking lines in the cogwheel menu
* Avoid breaking lines whn displaying prefix lengths in pool list
* Change title of prefix cogwheel menu to "Prefix" to match the others
www: Link to new add prefix page

Replaced the "Add prefix"-button on the prefix list page with an
AngularJS/Bootstrap dropdown menu with three options: Manual, From pool
and From prefix.

When choosing From pool or From prefix the user gets a message
explaining that the operations now are performed from the pool list and
prefix list pages respectively.
sql: add expires field

This adds the expiry field and sets default expiry time to infinity.

Part of #599.
pynipap: add expires attribute
backend: add expires field

The expires field simply contains a date when the current assignment
expires to help an IP registry / administration team to keep track of
assignment, possibly removing them or renewing them when expired.

In the database the expires attribute is stored as a timestamp and since
PostgreSQL supports infinity, we use that to signify if there is no
expiration time for a prefix. Pythons datetime objects on the other hand
do not support infinity and instead we rely on None to signify
+infinity.

The basic format is thus None for infinity and a ISO8601 string for
setting a specific date, in addition there is also support (through
dateutil) to set times like "two years" which means current time + two
years.
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.
Add test cases for expires attribute
Add dependencies for expires attribute
Merge pull request #649 from plajjan/599-add-expiry-field

Add expires attribute
backend: fix forking code

Forking code would never be triggered on startup as get('nipapd',
'foreground') returns string 'false' and not boolean False. getboolean()
fixes that. Funny how we use getboolean to get the value of the
foreground option in other places in the code.

The actual forking code is moved somewhat to play nicely with the
bind_sockets calls.

There is no automagic way of killing of the children processes if the
parent is killed so we now install signal handlers and manually loop
over the child processes to terminate them.
Add dependency on psutil
Disable a restart to pass tests
www: add button for from-pool prefix creation

Since the most common operation involving a pool is adding new prefixes
from a pool we add a nice green button for this so it's easy to find
instead of hiding it away in our cog wheel menu.
Merge branch 'garberg-link_to_ng-prefix-add'