Imprv/merge app instance and abstract instance

* Merge ApplicationInstance and AbstractInstance in ApplicationInstance. (AbstractInstance has been removed)
* Unifiedly manage application dependencies and executionService dependency in ApplicationInstance.
* Move ApplicationInstance proxy initialization logic to ApplicationProxyHolder (out of ApplicationInstance).

This patch aims to do a refactor, without changing ApplicationInstance behaviour.

However, a bug has been identified and solved in this patch. The bug was related to unresolveAllDependencies() method which was marking dependencies as pending but was not removing injected proxies from dependant Application, nor removing executionService from ApplicationInstance. Currently implementation updates Application and ApplicationInstance as desired.
Move this comment to the `isResolvedBy` method of the `Dependency`.