Cycle counters

These commits add a facility for measuring the execution time of code blocks and macros to do so conveniently from firmware code.
When nesting these counters, the overhead incurred by starting and stopping counters (i.e. the associated 'ldi'/'eor', 'out' instructions) is accounted for, although the method used is limited and if the instructions aren't grouped together, they will be ignored.
IRQs interrupting the instrumented code, do not pause the counters, an issue I wish to address soon-ish.

Starting a counter from firmware code requires sending a two-byte command, therefore command handling was rewritten and put in a separate file. It now supports multi-byte commands and permits users to register additional command handlers.

The avr_set_pc() helper takes care of preserving the previous PC, when setting a new one, required for overhead accounting.

A test case was added to verify cycle counter accuracy.