fvcams: do not close in stop to avoid endless loop

V4L2Camera::close() calls stop to end an ongoing stream. In case of an
error, e.g. if we try to close because the camera was unplugged, stop()
again would call close(), causing and endless loop.
lua mathext: fix round function for negative values

The math.round() extension gave wrong results on negative numbers.
Thanks to Johannes Rothe for spotting this!
fvmodels:PositionToPixel: add get_pixel_position_unchecked

this method can return negative pixel positions or pixels greater than
the camera resolution. Returned values have to be checked manually.
gossip: support local groups with separate send/recv ports

To test with Gossip locally it is necessary to use different send and
receive ports.
laser-lines: fix calculation of bearing direction

We discovered this during the RoboLab demo. Apparently it was not
committed and thus did not make it into the transition of the plugin
into the core repo.
skiller: add support for add-on features

A feature mechanism now allows to more dynamically extend the skiller
with more features.
skiller: add navgraph feature

The new navgraph feature provides a global variable navgraph to the
skiller environment if enabled in the configuration file.
core: fix dtor race condition on InterruptibleBarrier

An interruptible barrier could cause a problem when a thread was taking
too long, such that an interruptible barrier timed out. If now the
thread recovered and the barrier was destructed at the same time it
would cause a segfault. This in particular occured when running in
valgrind which slowed down the overall system.

Thanks to Frederik Zwilling for spotting this.
skiller: re-initialize features after Lua context restart
baseapp: remember start time and provide uptime
amcl: mute transforms warning at startup

Do not show transform errors for the period of the TF transformer's
cache time. This should help spotting the real errors at startup better.
laser-cluster: mute transforms warning at startup

Do not show transform errors for the period of the TF transformer's
cache time. This should help spotting the real errors at startup better.
colli: mute transforms warning at startup

Do not show transform errors for the period of the TF transformer's
cache time. This should help spotting the real errors at startup better.
laser-lines: mute transforms warning at startup

Do not show transform errors for the period of the TF transformer's cache
time. This should help spotting the real errors at startup better.
plugins: add dependency of skiller to navgraph

With the new navgraph feature the skiller requires the navgraph to have
already been built.
amcl: if neither current nor buffer timestamp works, use current time

If we can get the odometry pose neither at the time of the current nor
of the buffer laserscan, try to get any transform for the current
data. That is still better than running into global re-localization,
especially in highly symmetrical environments.
fvutils:ROI: fix intersect() calculation

some arithmetic was done wrong in ROI::intersect()
threading: unlock loop_mutex when default loop() calls pthread_exit()

This is relevant if the user does not provide a loop() method and
Thread::loop() is used.
The thread exits at that point, which means that Thread::run() never gets
to unlock the loop_mutex. This leads to a deadlock when
Thread:::prepare_finalize() wants to lock loop_mutex.

Of course this deadlock can be "avoided" by set_prepfin_conc_loop(true),
but this is not a proper solution.

Took me quite some time to debug this and figure out why my plugin would
not unload after making the transition from BLOCKED_TIMING to CONTINUOUS.
I hope this is the/a proper solution.
Merge remote-tracking branch 'origin/common/lua-math'
Merge remote-tracking branch 'origin/timn/fvcams-v4l2-fix'