Adding IMU support for the MPU6050

There are a lot of changes in this PR.  

I have added support for an `IMU`, specifically the MPU6050.

In the process, it required a refactoring of the `Accelerometer` and `Gyro` classes.  It also required the creation of a `Temperature` class.  Since the IMU is a single device which exposes multiple devices, there is also a new concept called `Board.Breakouts` which creates a single device that supplies data to multiple devices.

## To create an IMU, you can do this:

```javascript
var imu = new five.IMU({
  controller: "MPU6050"
 });

//imu.accelerometer
//imu.temperature
//imu.gyro
```

If you only want one, you can do that too:

```javascript
var accelerometer = new five.Accelerometer({
  controller: "MPU6050"
});
```

The same is true of `Temperature` or `Gyro`.

Default controllers for `Accelerometer` and `Gyro` are "ANALOG" which have the same behavior as before.

`shift()` is a costly operation: every value has to be moved every time it's called.