Implement closing the l2 packet capture layer.

With this interfaces can be cleanly removed and later new ones created
on the same device. Before recreation would fail due to the leaked
bound l2 sockets.
Remove unused message constant.
Simplify timeout handling by reusing existing infrastructure.

We can reuse the normal state change notification mechanism to deliver
the timeout message. Up to and including using the callback function,
making adding these fields separately as well as retrieving and using
them directly superfluous. Since this was also the only user of stop
watching, which indeed duplicated most of the normal delivery logic,
that one was removed as well.
Implement storing passwords using the BKeyStore.
Actually try removing any network config present.

This shouldn't really be needed, as we always only have one network
configured per interface.
Pull out _CheckAskForConfig() that tries to fill in all info.

The function decides whether or not a configuration dialog needs to be
shown or not. It will also load the password from the BKeyStore and
avoid the dialog if this was the only missing information.
Allow forcing the config dialog and do so on config errors.

For now the only user of this is the case where the password cannot be
configured due to a presumable password format error.
When failing to join, shut down by leaving and show the dialog.

We stop the join attempts by posting a leave network message that will
remove the interface and therefore shut it down. Then a new join
request is constructed based on the original one and the dialog is
forced. This way we can recover from mistyped passwords or wrongly set
auth parameters.