Fix bug in assert() based error handling

Force return after call to TINYFORMAT_ERROR to avoid bad indexing if the
user has supplied too few arguments.
Clean up variable width & precision handling

General cleanup to immediately pull out variable width and precision as
required, now that they're immediately accessible.  This removes the
last vestiges of the state machine which was previously used to handle
variable width and precision.

Also add additional unit tests for variable precision & width error
handling.
Make error handling unit tests more concise