added Halt() to a collection of devices

I added a devices type alias (might want to export it) so one can operate on a collection of devices.
I found that the API was cleaner when halting devices so the robot doesn't have to have any knowledge of halt and that is instead handled at the collection level.

Note that if we need to do more things on the devices, we could also implement an iterator:

```go
func(coll devices) Each(f func(*device)) {
  for _, d := range coll {
    f(d)
  }
}

// which can be called like so
r.devices.Each(func(d *device){
  d.Halt()
})
```