Tidy get_command_string()

* Use a map to determine command length
* only do it once
* ditch manual loop counting - use "for i in range(command_length)
Rationalise command string parsing

* Use list comprehension to chunk string into individual commands
* use slicing to decompose them into verbs and values
* iterate and send
Remove unused var declarations
camelCase is ugh.
create helper functions for testing valid times & setting timestamps
don't set timestamps unless we're handling a button event
Move button handling sanity checks to common helper function
Create new Camera class
More refactoring
more fixes