Add the ability to include/exclude applications.

- A new setting named LAYERED_APPS has been introduced. This
allows to select which applications will be layered.
- Another new setting named EXCLUDE_FROM_LAYERS has been introduced.
This allows to select application which will not be layered.
Adding support for dynamic layers.

- AppLayerFinder has been improved to support dynamic lookups of layers.
- Implement the concept of "layers providers". A layer provider is a
class extending from BaseLayerProvider which is able to returun a
dictionary of available layers.
Track save/delete events.

- The ModelLayerProvider now detects changes to the model collection
and updates the dictionary of available layers dynamically.