Add New Command Structure

Device commands should now be defined as in [Ping](https://github.com/hybridgroup/cylon/blob/e6c567a0908205b2cefc2b0c148b255f2093d8a7/lib/test/ping.js#L17-L19).

When creating a new robot:

- if `commands` is undefined, custom properties that are functions get aliased under their existing name
- if `commands` is an object, key -> value pairs become API functions
- if `commands` is a function, evaluate it. if result is an object, see above. if not, throw an error