Major overhaul of function "parse".
Broken down with helper function "handle_control_sequence".

The program's behavior may have been modified slightly. Entering an
invalid control sequence of form %{ ... } will omit the entire sequence. Also,
if a closing bracket is not provided, the program will not display the
remainder of the sequence.

Created struct "char_draw_args" for easier inter-function refrences to a set of
data that is usually stored and used together.

There may still be bugs in this, work will be continued.
"draw_args.button" initialized to zero for consistency.
"switch(*p) {" was returned to original state.
function parse_color can now interpret a larger set of misformatted instructions"
"draw_args.button" initialized to zero for consistency.
"switch(*p) {" was returned to original state.
fixed escaping a literal "%" with "%%"
The value of *p given by area_add() was one byte too great, which caused issues under certain circumstances if there were more commands within the control sequence that followed area_add().