Raise CommandError exception if vehicle command returns failure

I think it is more pythonic to raise and handle exceptions rather than
return and check result codes and descriptions.

This may require changing code that uses pytesla.

OLD:
    p = mycar.honk_horn()
    if not p['result']:
        print(p['reason'])

NEW:
    from pytesla import CommandError
    try:
        mycar.honk_horn()
    except CommandError as e:
        print(str(e))
Add charge_port_door_open and wake_up commands
Fix set_temps command typo
Add intermediate sun_roof_control states using percentages