openvpn: Add more options

Connman              OpenVPN

OpenVPN.NSCertType   --ns-cert-type <client|server>
OpenVPN.AskPass      --askpass <file>
OpenVPN.AuthNoCache  --auth-nocache
openvpn: Support '--tls-auth <file>' with optional '<direction>' argument

Connman              OpenVPN

OpenVPN.TLSAuth      --tls-auth <file> [<direction>]
OpenVPN.TLSAuthDir   optional <direction> argument to '--tls-auth'

Since 'OpenVPN.TLSAuthDir' contains the optional <direction> argument for
'OpenVPN.TLSAuth', handle them separately. The special handling is
identified by setting openvpn command line argument to NULL.
ipconfig: Add function to clear ipaddress information
dhcp: Clear ipaddresses from ipconfig before starting DHCP

This is needed if manually configured addresses were used and later
DHCP was taken into use. If the manually configured IP information
(address, netmask and gateway) and the information given by DHCP is the
same, DHCP will not set the IP address to the interface.
storage: Add void if function does not have any arguments
manager: Allow async CreateSession method call

The CreateSession D-Bus call should be marked as async call in order
to allow the session core to defer the response.
session: Factor out memory release part of cleanup_session

We want to reuse this code snippet for the error case in
__connman_session_create() too.
session: Pick directly first policy in list

There is no point in iterating over the list when we always
pick the first element in the list.
session: Policy register should check callback existence

Let's ensure that the policy plugin has all necessary callbacks
installed when connman_session_policy_register() is called. The rest
of the code expects that the create() and destroy() callbacks exist
whenever a plugin is used.
session: Add callback to policy create()

Instead returning directly a config when create() is called
in policy plugin, use a callback function for handing over a valid
configuration from the plugin to the session core. This prepares
support for asynchronous create call.
session: Remove name variable from connman_session_bearer

The string is only used when appending the bearer to the D-Bus
message in append_allowed_bearers(). Let's use
__connman_session_type2string() in append_allowed_bearers(). This
saves a bit of memory.
session: Remove match_all from connman_session_bearer

The match_all will be expressed through CONNMAN_SESSION_TYPE_UNKNOWN.
The 'no match' case happens when allowed_bearers is NULL.
session: Rename session_parse_allowed_bearers() to parse_bearers()

This function name was a source of confusion because in a later patch
we introduce connman_session_parse_allowed_bearers() which will
call parse_bearers(). With this change it should be more readable.
session: parse_bearers() should check for invalid types
session: Handle no match case in parse_bearers()
session: Remove struct connman_session_bearer

Instead start using enum connman_service_type directly.
session: Factor out user settings in __connman_session_create()

In order to be able to pass the user configuration provided through from
the D-Bus Manager.SessionCreate() call to the callback we need to store
the configuration into a local data data structure. This data structure
can then be passed into the callback introduced later on.
session: Register session after policy plugin returned config

Move the configuration part of __connman_session_create() into
session_create_cb(). With this change the policy plugin is able
to do async work to retrieve a configuration.
README: Add information about network interface clearing at startup
wifi: Skip service if there is error while loading its settings

If service settings cannot be loaded, then skip that service.
Thanks for Felipe Tonello for reporting the issue.