drivers: i2c: added I2C basics.

i2c-msg:
Describes a message which is to be sent over an I2C interface.

i2c-bus:
Description of the I2C interface (aka the bus).

i2c-client:
Representation of the receiving chip and its I2C interface.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'master' into i2c

Signed-off-by: Michel Megens <dev@michelmegens.net>

Conflicts:
	drivers/Kconfig
	drivers/Makefile
i2c: client: added a client to bus attatch.

i2c_add_client is used add a new client to a bus. Please note that
clients should not be added more than once to a bus.

Signed-off-by: Michel Megens <dev@michelmegens.net>
i2c: bus: added single message xfer functions.

Added the API functions:

i2c_master_send:
	Send a single I2C message of a given length to an I2C client.

i2c_master_rcv:
	Receive a single I2C message of a given length from an I2C
	client.

Signed-off-by: Michel Megens <dev@michelmegens.net>
i2c: bus: implemented API transfer function

i2c_bus_transfer is the API function to transfer multiple I2C messages
using the repeated start functionality in the I2C standard.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'master' into i2c
i2c: core: implemented the backend for I2C xfers

__i2c_transfer:
	Backend I2C transmission function. This function handles an
	of messages to the I2C bus driver. If the transmission fails
	and a retry is requested, it will retry the transmission for a
	maximum of i2c_bus::retries amount of times or untill the
	transmission received a timeout (i2c_bus::timeout).

Signed-off-by: Michel Megens <dev@michelmegens.net>
sched: core: added setup for the FIFO scheduler

FIFO algorithm:
	The FIFO scheduler is a priority independant scheduler. Threads
	are sorted in their queue's based on the time of insertion. This
	way starvation is kept to a minimum and threads can still execute
	in a real time context.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'master' into sched
sched: fifo: implemented the FIFO algorithm.

kernel/sched/fifo.c:
	Implemented the FIFO (First In First Out) scheduling algorithm.
	The FIFO scheduler should be used in real time systems where
	sorting on a priority basis is not important.

Signed-off-by: Michel Megens <dev@michelmegens.net>
sched: core: fixed a entity dep in thread init

The thread data field initialiser used to set the next pointer in the
scheduling entity to NULL, but depending on the used algorithm, the
entity might not have a next pointer.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'sched'

	* FIFO scheduler