implement userpage programming

add another buffer where the user page resides.  this should enable
programming a user page
bugfix in atmel.c for select mem unit of non uc3

for no uc3 group devies select memory unit should do nothing - not
fail.
Merge branch 'changeargs' into implementuser

Conflicts:
	src/atmel.c
change structure of intel hex parse

think this simplifies things
cleanup intel_hex

in intel hex, cleanup usage of max_size and page_size, also make
data in the user page more general (does not need offset 0x800000
but needs to exist inside the user page region).
simplify use of buffer_out, remove dup var comment

simplify the use of buffer_out by removing duplication of buffer
contents.  also add comments about possible bugs.
Merge branch 'changeargs' into implementuser
minor cleanu
bugfix in intel_hex_to_buffer double increment

was incrementing pointer instead of counter for prog data
specify flash or memory size in execute_flash

specify flash size versus memory size in execute flash normal.
add warning before overwrite configuration data

the last word in the user page (or last two words) contains config
information. clearing this data will cause the device not to restart
properly into the program code.  a --force-config flag is required
to write data into the last two words of user page
Merge branch 'start-reset' into implementuser
Merge branch 'start-reset' into implementuser
update documentation for flash-user
Merge branch 'implementuser' into oldupdate

Conflicts:
	src/atmel.c
	src/commands.c
	src/intel_hex.c
	src/intel_hex.h