This commit adds various major and minor improvements
1) (major) pilight now supports multiple protocols per device. In the
feature request users explained that KlikAanKlikUit dimmers can be
controlled by the new KlikAanKlikUit remotes, the old KlikAanKlikUit
remotes, and with the KlikAanKlikUit dimmer remotes. So, in order to
know if the status of a device was changed, pilight needs to check
for either one of those three protocols.

This feature does not limit the combination of protocols. This means
you can combine weather stations, dimmers and switches in one device
(would one have a proper use for it). This means practically that
one can assign multiple weather stations to a single device e.g.
combining a humidity meter with a temperature meter. The GUIs
will interpret the device by the device type of the first protocol.

Check the wiki for a explanation on the new config structure.

2) (major) The webserver cache is now working properly. This means that
the webgui files are only read from the filesystem once, and then
loaded into the memory. This means that when you open the webgui a
second time, the files are no longer read from the filesystem and
thereby reducing the FS IO of pilight. The webserver cache can be
disabled by setting the "webserver-cache" setting in the settings.json
to 0.

3) (minor) pilight previously crashed whenever a GUI sended a value as
an integer (e.g. a dimlevel).

4) (minor) Some memory leaks still occured when the pilight daemon was
stopped early. This happened when a user did not start the daemon
but only wanted to see its version number. By stopping the daemon
in this early stage, the garbage collector was not called.

5) (major) Previously there was no feature that allowed protocols to
push messages to pilight. Only messages that were received by pilight
or that were communicated when a protocol was polled where supported.
This restriction excluded sensors connected to the GPIO pins to
communicate to pilight directly. The new push functionality allows
for protocol creation for sensors connected to the GPIO pins.

6) (minor) The protocols specific settings where not all checked
for validity due to missing functionality. This affected protocol
settings that influenced the behavior of protocol values. An example,
the dimmer protocols allows users to set a min and max dimlevel value.
Previously, pilight did not check if the dimlevel set in the config
was within the min / max range and thereby the config file could
be inconsistent. A new protocol function "checkValues" is introduced
to overcome this lack of functionality.
Updated debugger with experimental pulse length detection
Made pulse length detection modular throughout pilight-debug
Fine tuned pulse length detection in pilight debug
Two small bugfixes

1) The device info wasn't always send through the controllers and GUIs
when the config was updated.
2) When running in "none" hardware mode, the relay did not create a
broadcast message which it should've.
This commit fixes a memory leak in the process file handling
This commit adds several small (internal) features

1) When pilight daemon recieves a repeated code it will communicate
for each received code which number the specific code is in the
total number of repeats.

2) The config file won't be updated anymore while the daemon is
running. When the daemon is started, the config file will be writen
to once and once again on shutdown. All changes are kept inside
the memory. This reduces unnecessary IO.

3) Then pilight daemon was started as a non-root user it showed
a segmentation fault. The daemon will now check if it is started as
a root priveliged user or informs otherwise.

4) A small improvement was added in the options library in which
multiple error return codes are given specific to each error.

5) The pilight logs will now contain microseconds to enable
specific benchmarking of code.
This commits add the dynamic pulse detection and more.

1) The impuls protocol has a very short pulse length. Having a static
pulse length made it impossible to receive impuls codes. Other
protocols also differed in their pulse length. Making the pulse
length detection modular also made the receiving a lot more accurate.
It also reduces false positives.

Please be aware that the arctech_old protocol is broken due to a lack
of information prior to this commit.

2) Raw codes sent from the sender will now be parsed within the daemon
as if it was a received code. This enables pilight to update know
devices in the config file, but also enables users to simulate
received codes which is helpfull for protocol development.

3) A small bug was fixed in the options library which gave a
segmentation fault when a long argument was used.

4) pilight now supports the Alecto WSD-17 weather station.

5) Errors from make clean will now be suppressed.
Config errors were not shown in non-debug mode
Fixed arctech old protocol for new dynamic pulse detection
Fixed small bug in options parsing, daemon debug mode, and in the Impuls protocol
Small verbosity bugs and some cleanup
Always show errors on terminal
Added input validation for Alecto temperature and generic weather battery value
Restructured daemon GC
Added ds18b20 protocol
This commit adds the threads library

Various parts of pilight rely on threads to be able to run
simultaneously. However, it's not always (easily) possible to start a
thread and also keeping the function that started the thread alive.
Failing to do so will stop the thread. So instead of creating a
confusing circle of threads that start threads of their own, pilight
now incoporates a specific threading library. Every part of the
program can now register a thread and one main loop will take care
of starting and stopping these threads.
More efficient threads loop
New program pilight-raw for showing raw receiver output
Added first tryout of Home Easy Old protocol