session: Stop tracing services

Do not guess via service state change notifiyer callback
which service should be assigned to session. We let
service.c do all the work in the future.

In this step we get rid of the session_hash and session_list
and all the code associated. Note, session_changed() can
now be dropped since there is no functionality left. Instead
just directly call session_notify().
session: Use boolean for tracking connect requests

Free-ride mode is implicit always enabled (see documentation)
we only need to track when a user requests a connection.
This can be expressed by a boolean. Remove the reason enum
and rename the connect and disconnect functions.
session: Add internal session API for service layer

In order to be able to assign/deassign Services to Sessions
we need an API between service.c and session.c.
service: Track all active sessions

We want to be able to modify and update sessions in future. Therefore
we track all active session in a global list.
service: Add/remove services to/from sessions when state changes

During normal operation we only have to add or remove service
from service when the service enters or leaves READY or CONNECTED
state.

We need to do some more work (comparing) when a service or a
session is created. In the worst case we have n*m comparison
where n is the number of services and m the number of sessions.
The worst case happens if all session allow all kind of services
via the 'any' AllowedBearers. The most likely this is only relevant
for wifi.

The current implemention does not try to be extra clever, instead
it is kept as simple as possible. We can still optimize this later
if needed.
main: Introduce SessionAutoConnectMode

We need to change the behavior for the AutoConnect=true case
with sessions. The use case is that we have only sessions users.
When no session asks for a connection the system should stay idle.
Currently when the system is idle, ConnMan will attempt immedidatly
to auto connect. When sessions are used, we can defer this until
an user/application does a Session.Connect().

Unfortunatly AutoConnect can't be changed at this point (we would need
a tristate boolean) we add a global flag which allows to change
the behavior of the auto connect state machine.
service: Allow session to establish a connection
service: Remove active_sessions

Each service already knows via service->sessions if there is
a user (either in free-ride or connect state) associated with it.
So there is little point in keeping a counter table per technology.
service: Add auto disconnect function
session: Unlink dependency between reason 'connect' and bearer config

A session is always in the free-ride mode, which means we set the
session active. The connect request is expressed via setting
session->info->connect = true and triggering the auto connect.
session: Handle connection type configuration changes

The simplest way to let service.c recheck the configuration
is to toggle via __connman_service_set_active_session().