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