[Application] Move ApplicationSystem creation to a factory function

This will be used to provide different subclasses for the different
platforms. The factory function isolates the caller code from this
detail.
[Application] Create ApplicationSystemLinux

This commit gets rid of the general interface ApplicationSystemProvider
that wasn't bringing anything to the table besides memory management.
Other platforms that will use run-as-service mode should add their own
needed objects in the platform specific versions of ApplicationSystem.

The ApplicationSystemLinux now creates the service provider if
needed. The function is_running_as_service() was made virtual (and
renamed to reflect that is not a simple accessor anymore).
Merge pull request #1294 from cmarcelo/app-system-linux

[Application] Get rid of the general ApplicationServiceProvider interface