This also makes it so that when a surface is cut off by the clip height, the neighbour tiles will draw the edges too, making the surface appear as a pit instead of a blank tile.
I've renamed some of the variables and added a few comments to make the code easier to understand. I've also left a todo comment for a future improvement - the current call isn't expensive so it won't become a bottleneck in the meantime.
gcov 8 outputs **a lot** (gigabytes) of messages like
```
test_tile_elements.dir/test/tests/TestData.cpp.gcno:'main' has arcs to entry block
test_tile_elements.dir/test/tests/TestData.cpp.gcno:'main' has arcs from exit block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'main' has arcs to entry block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'main' has arcs from exit block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv' has arcs to entry block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv' has arcs from exit block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'_ZN9__gnu_cxx13new_allocatorIcE8allocateEjPKv' has arcs to entry block
test_tile_elements.dir/test/tests/TileElements.cpp.gcno:'_ZN9__gnu_cxx13new_allocatorIcE8allocateEjPKv' has arcs from exit block
```
which we cannot alleviate, but they overload Travis' log size of 4MiB
causing the jobs to get killed.
This will simply silence those messages.
- Use `= 0` for initializing types
- Add default values to some structs, instead of zero-initializing their instances with `{}`
- Use `std::make_unique` in Network.cpp
- Remove trivial constructors and destructors
- Improve readability of expression in Vehicle.cpp