split ihex parse into userpage and memory

assuming userpage offset is always 0x800000 anything with that
offset is not added to memory and instead is added to user.
the next step is to return pointer to both arrays and process
separately.
program but doesn't validate

update parse hex function to return both user page data as well
as program data. it will send a program with user page data and
doesn't fail on load, only on validate.
add flash user page and validate

some program hex files contain data in the user page section.  this
is the case if code intefaces with data contained in this page.
functionality added :
 check if data in hex file resides in user page region
 if so:
    flash this data along with program
    validate this data along with program validation

also - moved 'buffer' initialization inside validation check.
buffer does not need to be created if validation is suppressed,
so no reason to possibly get an error allocating memory if buffer
will not be used.
added blank check to programming device

previously there was no check that the page you are going to write
to is blank.  this checks that the page is blank before you try
to write.  a write can only clear a bit but can never set a bit so
writing to a non-blank page is never a good idea.
Merge branch 'blank_check'

Conflicts:
	src/atmel.h
Merge branch 'implement_user'