Add support for mindsensors.com EV3 Sensor Mux
Start on mport class
Add new more generic lego bus and finish mindensors.com EV3 sensor mux support.

We will be moving from EV3 specific drivers bus to more generic drivers. This
is the first step in that direction. Here is what is changing in terms of
sysfs paths.

* /sys/bus/legoev3 > /sys/bus/lego
* /sys/bus/legoev3/[in|out]* > /sys/class/lego-port/port*
* /sys/class/msensor > /sys/class/lego-sensor
* /sys/class/msensor/sensor*/dp > /sys/class/lego-sensor/sensor*/decimals

The legoev3 bus becomes the lego bus. There will be fewer devices on this bus
now. Port devices now have their own class, so they will no longer be on the
lego bus. We are also dropping the idea of a 'port host' on top of an input
port. The functionality will be merged into the port drivers. The bus will
still be used for driver matching for sensors and motors though.

The msensor class is being renamed to the lego-sensor class. Also, the dp
attribute is renamed to decimals.

The mindsensors.com EV3 sensor mux has been implemented using these new classes
and bus. The EV3 analog sensor driver has been migrated too, so the EV3 Touch
sensor will not work with the EV3 right now, only with the sensor mux.

The new drivers are also organized a little better using subdirectories. Other
drivers will be moved to subdirectories as they are migrated to the new
framework.
Move all sensors to sensor subdirectory and migrate to new lego-sensor class.

* All instances of msensor are now lego_sensor.
* Fixed up documentation as well.
* Moved wedo driver from usb into legoev3 subdirectory.
Fix HiTechnic NXT Sensor MUX commands
Fix mindsensors EV3 Sensor MUX not unregistering sensor when removed.
Convert HiTechnic NXT sensor mux and Analog/NXT sensors to new lego-bus/-port framework.

Analog/NXT sensors are temporarily broken when connected to the input ports
on the EV3.
Move motor driver to subdirectory
Move EV3-specific drivers to subdirectory.
Rename driver directory from legoev3 to lego
Move LEGO header files to drivers/lego directory.

These files were in include/linux/legoev3.

Also moved legoev3_battery from drivers/power to drivers/lego/ev3
Fix unintended diffs from mainline kernel
Move EV3 input and output port drivers to new lego bus/lego-port class framework.

* Removes the old legoev3 bus completely.
* Removes the concept of a separate "port host" device (although we still have
  something like this for triggering udev rules for I2C and UART sensors - but
  these are just sysfs devices with no drivers).
* ev3-analog and nxt-analog drivers are fixed up to work with both EV3 input
  ports and sensor muxes.
* Normalize port name uevent properties to PORT_NAME
* Get rid of lego_port_type and just use device_type instead

Issue ev3dev/ev3dev#219
rename legoev3_ports files for consistency
rename EV3 UART Sensor Line Discipline
drop LEGO/lego from namespace prefix in EV3 UART Line Discipline
add LEGO WeDo to hid-ids.h and make the hid driver ignore it
Convert WeDo driver to new lego bus

* The WeDo hub itself is now a lego-sensor. The status and voltage attributes
  are converted to values and the other attributes are converted to commands.
  Reset is removed because it seems to lock up the WeDo hub. High Power is
  removed and is instead automatically detected based on the current availible
  reported by the USB port that the WeDo hub is connected to.
* The WeDo ports are now lego-port devices.
* Sensor, motor and led devices remain the same.
* Fixed sleeping (registering/unregistering sensor/motor/led devices) in
  interrupt context.
* Also includes some code cleanup.
Give LEGO-driver-specific uevent properties a namespace and change name attributes to device_name.

ev3dev/ev3dev#223
Fix compiler warning about const.