add launch commmand, remove doc on start & reset

- launch command defaults to the old reset functionality
- launch --no-reset is the old start functionality
- start and reset are still implemented as is, but not documented

atmel start and reset both start the device only start calls a jump
instead of resetting the device (which can lead to problems with bugs
associated with initial device state not matching datasheet or device
state after normal reset).  this update combines these two commands
because they essentially do the same activity, only the approach is
different.

no functional change here, only labels / commands have changed
add debug strs, comments, move fcn desc, whitesp

- add several debug strings for various errors
- add function comments
- move function descriptions to headers files and prototype section
- add fixme marks to fcns where broken
- join fcn start braket with header to improve folding
- add summary of atmel commands
- add macro for ATMEL_BLOCK_SIZE
implement atmel select memory type

- one function is used to select memory type instead of 3 or 4 with
  only a small number of different parameters but otherwise the same
  functionality
add functioning check for blank memory space

- implement functioning _blank_page_check by checking status
- handle non-blank status by checking for first non-blank address
- implement blank check using working page check
- clarify several variables
change flash address end to end from length

- set end as last valid address instead of one beyond, this is
  the same way atmel devices expect to see addresses (first
  valid -> last valid) so keep it consistent.
- simplify atmel_flash_populate_header by using end
- change atmel_flash_block to __atmel_flash_page to match other
  memory access function name convention
- improve clarity on parameters for atmel_user
- bugfix offset end by start in flash fuses
- add start addr to end addr in conversion from length
- chagne return val on flash page to 0 on success
- bugfix in programming device, incr. start byte
simplify main flash function and bugfix on eeprom

- change behavior so alignment of buffer with page edges always
  takes place - every data sheet suggests that all data writes
  shoul align page buffers.
- fix so last flash page buffer is checked in buffer align process
  (previously the for loop ended one round too early)
- change so unassigned data is written to 0xFF instead of 0 because
  blank memory is 0xff (possible problem on validiation if data
  was already written in an unassigned location, writing to zero
  will set the flash contents to 0 whereas not writing - or writing
  0xff will not change the flash contents) - pages should be erased
  first before program anyway so this is probably not an issue
- remove all of the jump calls from main program so the algorithm
  is much easier to understand
- add a progress indicator to the main programming utility
- remove page empty check from atmel_flash, it should be in command
- improve debug string/ arg checker - make consistent w/ other module
- implement check of total prog data size at start
- fix call to program eeprom would select main program memory
begin implementation of other user prog strategy

this one the buffer contains a lot more information about the
data and the offset address for the user page is passed to
the intel hex conversion
major reorg of commands to reduce duplicated code

- redo what buffer holds to include information abotu size and data
- redo how intel hex is processed and split off adding data to also
  use with serialize
- add several internal functions to command and atmel to reduce code
  duplication: verify, print debug strings, init buffer etc.

status: it will send the program but won't verify correctly
- need to update how buffer is sent to atmel flash normal
- need to update how atmel read uses buffer
combine dump, add prog, combine validate

- combine dump user, flash & eeprom into 1 fcn
- use new buffer format for read function
- add stand alone validate fcn and combine all uses
update write flash to use buffer structure

- pass buffer structure to flash program, remove all extra/ old
  params
- pass buffer structure to align buffer, remove olds
- move duplicated functionality from commands.c to atmel.c
update start command to launch and change doc

the start command is now back just as it always has been
the new command is launch, that way neither start or reset
functionality change
Consolidate flash command into one function

- move buffer info inside buffer_out / buffer_in to prevent
  init of almost identical array 2x
- consolidate command write functions
- update documentation, manuals
- add blank check on erase
add HEX output, streamline program args

- add an option to dump as a hex file instead of binary
- change arguments to read with an optional --bin flag
- dump command is now suppressed from help menu
- implement erase suppress validation
- add ability to dump only non-blank pages
- add -h and --h but don't document
- combine flash commands with --eeprom and --user flags
- all old commands still fully supported (not documented)

TODO: update the manual pages
bugfix on read behavior: start at 0 w bin & blank

- change so read command starts at buffer 0 when --bin is specified
  or when the contents of memory are blank.
improve stderr print, shift print to atmel.c

- better status / error printing from atmel.c than command.c
- improved erase, read and program messages
- add back print of usage % at the end of program

STATUS: looks like there is a page error for program thought
this had already been fixed
add blank_page_check functionality to makehex

- when making a hex buffer, skip entirely blank memory pages
- remove filename parameter from intel_hex_from_buffer function