add attribute to list valid NXT analog sensor devices/drivers
add manual modes to input ports

This adds 3 attributes to the input port device: `mode`, `modes` and `state`.

`mode`: [rw] Gets and sets the modes of the input port. Modes are:
* `auto`: (default) Current behavoir where sensors are autodetected.
* `nxt-analog`: Loads nxt-analog-host device and nxt-analog sensor.
* `nxt-color`: Loads nxt-color device.
* `nxt-i2c`: Configures the port for I2C communications and loads the
   nxt-i2c-host device.
* `ev3-analog`: Loads ev3-analog-host device and ev3-analog-01 sensor.
* `ev3-uart`: Configures the port for UART communications and loads the
   ev3-uart-host device.
* `other-uart`: Configures the port for UART communications but does not load
   a host device.
* `raw`: Provides sysfs attributes for reading analog voltages and exports the
   gpios to sysfs so that they can be manually controlled.

`modes`: [ro] Returns a space delimited list of the modes listed above.

`state`: [ro] Returns the current state of the connection. In auto mode, it
 returns one of the following:
* `no-sensor`: No sensor is connected.
* `nxt-analog`: A NXT analog sensor is connected.
* `nxt-color`: A NXT color sensor is connected.
* `nxt-i2c`: A NXT I2C sensor is connected.
* `ev3-analog`: An EV3 analog sensor is connected.
* `ev3-uart`: An EV3 uart sensor is connected.
* `error`: An unrecognized device is connected (such as a motor).

If the mode is set to a value that cooresponds to one of these state, then that
state will be returned. If the mode is set to something else (other-uart, raw)
then `no-sensor` will be returned.