Map and LayerGroup layer collection as a reference.

Ensures:
- getLayers() always returns defined and non-null result;
- getLayers() always returns the same object.

Solves:
- cumbersome undefined / null checks in caller code;
- unhandled cases like in Map.addLayer();
- using an obsolete layer collection reference after a setLayers(myNewLayers)
Ex:
  - bindto(someLayers, map.getLayers()) having no more effects;
  - var sync = new Synchronizer(map.getLayers(), ...); sync.syncLayers().
We could use the `@protected` tag on ol.Object.get and ol.Object.set to enforce encapsulation of the properties.
Access would then be allowed only through controlled getters and setters.