Unified mesh layer mapping

* Unifies the interface of MeshLayerMapper and LayeredVolume and introduces base class for these two  to handle common functionality.
* Allows to create prism-meshes from incomplete layers or conflicting information and unifies/simplifies GUI dialogue for inputting the relevant information.
* Moves ascii-raster I/O to FileIO
To check if `ext` is equal to `"asc"` you also need to check the sizes of both strings; or just
```c++
if (ext == "asc")
```
which is more readable in my opinion.