We initialize `_dataLayers` up front

If there is no data, then `initializeDataLayer` is never called and
_dataLayers is never initialised properly leading to the bug
manifesting in #284. We initialise _dataLayers to `[[ ]]` up front.
Closes #284.
Merge #285