This pull requests adds I2C and SPI support and improves the PWM existing support

This pull request adds the I2C and SPI support to Erlang/ALE and improves the PWM existing support.
The C source files are documented with Doxygen while the Erlang source files are documented with EDoc.

Changelog

###### Added instruction to compile PWM, SPI, I2C and to generate documentation
- Makefile

###### Added I2C support
- c_src/i2c_ei.c (I2C erlang interface)
- src/i2c.erl (I2C gen server)
- src/i2c_sup.erl (I2C supervisor)
- examples/i2c_demo.erl (I2C demo for the esl demo board)

###### Added SPI support
- c_src/spi_ei.c (SPI erlang interface)
- src/spi.erl (SPI gen server)
- src/spi_sup.erl (SPI supervisor)
- examples/spi_demo.erl (SPI demo for the esl demo board)

###### Improved PWM support
The old PWM support was converted in a gen_server and a supervisor for it was added.
- c_src/pwm_nif.c (PWM nif library) 
- src/pwm.erl (PWM gen server)
- src/pwm_sup.erl (PWM supervisor)
- examples/pwm_demo.erl (PWM demo for the esl demo board)

###### Other
- doc/doxygen.conf (doxygen configuration file for generating the driver documentation)
- src/port_lib.erl (removed debug message)