Hardware modes are now modular

Previously the gpio and module hardware modes where hardcoded inside
the daemon, learner, and debugger. This made it difficult for
developers to add support for additional external hardware. This
commit makes the hardware support modular just like the protocols
are. The currently supported hardware types are now exported to this
new structure and can be found in the "hardwares" folder.

The immediate advantage of this abstraction that is the lirc lib has
become obsolete. To use the kernel module, only the bare minimum of
code is now used to read from and write to the kernel module, making
pilight less bloated and faster.

Another important change is that the learner and debugger now use
the main settings.json file to know what type of hardware is used
to receive codes from. So, they don't work independently anymore.