Syntax is `write <attribute> <value>`. Supports a value of type string,
hexadecimal string, or integer.
Ex:
- `write 180D.2A38 hello`
- `write 180D.2A38 0xbeef`
- `write 180D.2A38 123`
Write with response method is used if supported by characteristic,
otherwise write without response.
Add a find_attribute() method to consolidate common logic of finding a
characteristic or attribute handle in `do_read()` and `do_write()`.
Tested with run_gatt_server.py example to verify sent data.