reorder commands.c flash-user during program

if there is data in the hex file overlapping the user page it is
ignored by default- in fact until a flag is added it is always
ignored.  it must be programmed separtely.  also reordered
this program section in the main flash area.
changed atmel_blank_check to use pages

atmel_blank_check previously incremented pages like they were
memory addresses (from 0 up to mem_size) but there are only
mem_size / page_size pages (so about 500x fewer pages).

now, the range of pages to check is first found, then the offset
on the first and last pages, then each page is checked individually.

this currenlty is not working when called after erase chip but it
works when called from blank_check in program.  the error is
hopefully unrelated.
Merge branch 'master' into bighexfile
fix blank check page size error

previously the page size was set using the page size for the device.
converted to 'page size' of 16 bit address field (size 0x10000).
also added a macro for this size, added debug output.

handling when page out of range is selected does not work well.
request status should return 0x08 or errADDRESS, but instead
the USB hangs up on the DFU_DOWNLOAD. this could be a problem
with the device.
program works with data files larger than 0x10000

for some reason, large files were not previously programming.
this patch fixes the problem programming larger files. and adds
lots of debugging information.