A "domain" of the world. Surfaces can only be created through the API and can not be
deleted. However, it is planned to allow deletion of a surface in the future. Surfaces
are uniquely identified by their name. Every game contains at least the surface "nauvis".

Count entities of given type or name in a given area. Works just like
LuaSurface::find_entities_filtered, except this only returns the count. As it doesn't
construct all the wrapper objects, this is more efficient if one is only interested in the
number of entities.

Parameters

Table with the following fields:

area :: BoundingBox (optional): Search area. If not given and position is not given then the entire surface is searched.

position :: Position (optional): Search position. if not given and area is not given the entire surface is searched. If both area and position are given position is used.

correct_tiles :: boolean (optional): If false, the correction logic is not done on the changed tiles.
Defaults to true.

Note: It is recommended to call this method once for all the tiles you want to change rather
than calling it individually for every tile. As the tile correction is used after every
step, calling it one by one could cause the tile correction logic to redo some of the
changes, and it is also much performance heavy.